**
正则表达式
**
{let reg = /\bis\b/g;
// \b匹配单词边界
let str = "he is a boy . this is a dog . where is she ?";
console.log(str.replace(reg,"IS"));
}
g:global全文搜索 i:ignore case 忽略大小写 m:multiple lines 多行搜索,搜索时识别大小写
{
let str = "he is a boy , Is he?";
console.log(str.replace(/\bis\b/gi,"0"));
}
[]构造类 [abc]a、b、c中任何一个 [^abc] ^在[]中是取反,除了a、b、c [a-z]a到z中任意一个字符
{
let str = "abakkavac22-522"
console.log(str.replace(/[abc]/g,"x"));
console.log(str.replace(/[^abc]/g,"x"));
console.log(str.replace(/[a-z]/g,"x"));//a到z中任意一个字符
console.log(str.replace(/[a-zA-Z0-9]/g,"x")); //0-9 a-z A-z中任意一个
console.log(str.replace(/[0-9-]/g,"x"));//0-9中任意一个或-
}
边界;
^ 以xxx开始
$ 以xx结束
\b 单词边界
\D 非单词边界
{
let str=`@123
@456
@789`
console.log(str.replace(/^@\d/g,"x"));
console.log(str.replace(/^@\d/gm,"x"));
}
量词
“?” 出现0次或1次
“+” 出现1次或多次
"* "出现0次或多次
"* {n}"出现n次
{n,m} 出现n-m次
{n,} 出现n次或更多
{
console.log("12345678".replace(/\d{3,6}/g,"x")) //贪婪模式 把出现6个数字的替换为x
console.log("12345678".replace(/\d{3,6}?/g,"x"))//加?非贪婪模式 把出现3个数字的替换为x
}
反向引用 使用$n的形式 n从1开始
忽略分组 ?:
代码片
.
{
console.log("2020-03-04".replace(/(\d{4})-(\d{2})-(\d{2})/g,"$2/$3/$1"));
console.log("2020-03-04".replace(/(\d{4})-(\d{2})-(?:\d{2})/g,"$2/$3/$1"));
console.log("2020-03-04".replace(/(\d{4})-(?:\d{2})-(\d{2})/g,"$2/$3/$1"));
}
前瞻
正向 export(?=assert)
反向 export(?!=assert)
表达式\w(?=\d)表示匹配到一个单词\w时还需向后判断是否为一个数字
{
console.log("a2*34v8".replace(/\w(?=\d)/g,"x"));
console.log("a2*34v8".replace(/\w(?!=\d)/g,"x"));
}