元字符 [ ]
[ ] 代表一类字符(元类字符), [ ]有或者的意思,。比如[abc],意思就是a或b或c。 [ ]里还可以有数字.大小写字母。比如[0-9a-zA-Z]
var str="diauhvvdai";
var reg=str.replace(/[ha]/g,"xx");
console.log(reg);//输出dixxuxxvvdxxi
量词 {}
量词是用来修饰字符的。
{m} m位数
{m,n} m位数-n位数
{m,} m及m以上位数
+ {1,} 1位及1位以上
* 任意
? 0或1位
var str="123 38658 395 38726 34324";
var reg=str.match(/\d{2,5}/g);
console.log(reg);//输出["123", "38658", "395", "38726", "34324"]尽可能匹配更多的字符(贪婪模式)
console.log(/a?/.test(str));//输出true
贪婪模式
贪婪模式
var str="123 38658 395 38726 34324";
var reg=str.match(/\d{2,5}/g);
console.log(reg);//输出["123", "38658", "395", "38726", "34324"]尽可能匹配更多的字符(贪婪模式)
非贪婪模式 (?)
var str="123 38658 395 38726 34324";
var reg1=/\d{3,}?/g;
console.log(str.match(reg1))
分支 分组 引用
分支 | 或者的意思 [ab]相当于(a|b)
var str="dskj lsdk dslknv lksn";
var reg=str.match(/skj|sdk/g);
console.log(reg);//输出["skj", "sdk"]
var reg1=/\bdskj|lsdk\b/g;
console.log(str.match(reg1));//输出["dskj", "lsdk"]
分组 ()
忽略分组 ?:
var str1=`
2017-08-25
hdbh-12-12
1234/11/21
2019/211/12
2134-12-122`;//模板字符串
var reg2=/(\d{4})[-/](\d\d)(?:-|\/)(\d{2})[^0-9]/g;
console.log(str1.match(reg2));
console.log(str1.replace(reg2,"$2月$3日$1年"));
/* 输出["2017-08-25↵", "1234/11/21↵"]
08月25日2017年 hdbh-12-12
11月21日1234年 2019/211/12
2134-12-122
*/
引用 $1.$2,... (引用的就是分组的内容)
上一个例子用的$1,$2,$3就是引用
边界问题
^$ (整个字符串用^开头,用$结尾)
单词的边界 b
非单词的边界 B
/^\d{11}$/ 手机号
前瞻
正向前瞻 reg(?=assert) assert断言
反向前瞻 reg(?!assert)
var str="Hi Hello Hew Hz Hv";
var reg=/H(?=i|z)/g;
console.log(str.replace(reg,"h"));//输出hi Hello Hew hz Hv
var reg1=/H(?!e)/g;
console.log(str.replace(reg1,"h"));//输出hi Hello Hew hz hv
###正则对象的属性
lastIndex 最后匹配的索引
reg.flags 修饰符(igm)
reg.global
reg.ignoreCase
reg.multiline
reg.source 正则里的内容
var str="ab dbn ubd";
var reg=/b/g;
console.log(reg.test(str));//输出2
console.log(reg.lastIndex);//输出ture
console.log(reg.test(str));//输出5
console.log(reg.lastIndex);//输出ture
console.log(reg.test(str));//输出9
console.log(reg.lastIndex);//输出ture
console.log(reg.test(str));//输出0
console.log(reg.lastIndex);//输出false
console.log(reg.flags) //输出g 修饰符(igm)
console.log(reg.global) //输出ture
console.log(reg.ignoreCase) //输出false
console.log(reg.multiline) //输出false
console.log(reg.source) //输出b 正则里的内容
正则表达式的使用
test 用来查看是否存在,有则输出ture,没有则输出false
exec 只找第一个
返回值:如果没有找到匹配返回null,如果找到则返回一个数组
返回的数组有三个属性,分别是input、index和lastIndex
complie 用来修改正则
var str="ab dbn ubd dsjh dskj";
var reg=/\b[a-z]+\b/g;
console.log(reg.test(str));//输出ture
console.log(reg.exec(str));//输出"dbn"
reg.compile("\\b[a-z]+\\b","i");
console.log(str.search(reg));//输出0
字符串的方法
search("")//结果为>-1则有该字符串,为-1时则没有
split("-")//"2017-8=24" 结果为["2017","8","24"]
match 返回值:如果没有找到匹配返回null,如果找到则返回一个数组
返回的数组有三个属性,分别是input、index和lastIndex,input包含了查找的字符串,index属性包含了整个被查找字符串中被匹配的子字符串的位置,lastIndex属性中包含了最后一次匹配中最后一个字符的下一个位置
replace("is","Is")//将"is"替换成"Is",只能替换1次,想替换n次,则写n次。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。