正则表达式的好处
正则中的或|
const reg = /aaa|bbb/ 这个意思是匹配必须是aaa,bbb是一个整体匹配,而不是a或b一个字符 原子组和原子表中的或| 原子组(aaa|bbb) 原子表[]这里面就有或的意思
正则中的转义符\
有一些字符在正则表达式中有一些特殊含义,比如. . 1、代表是意思除换行符的任意字符 . 2、代表就是字符串点
那么在写正则的时候如果你就是想匹配字符点那么就要转义 /./ 就是匹配字符点. 而不是任意字符,
注意: 在正则new RegExp中写的是字符串所以跟字面量写转义还不一样,看图片,有一个小技巧,如果你看不明白那就在控制台打印下,在写到new RegExp中
\d字符串代表就是字符串d,所以在new RegExp中点要\d才是\d代表数字
正则中的字符边界 ^ $
^开头 但是^如果出现在原子表代表非的意思[^\d] 非数字 $结尾
匹配任意字符
[/s/S] [/d/D] [/w/W]
m多行匹配修饰符(到时候看看例子吧没记录)
我理解的就是一行一行匹配
i与g模式修正符
i代表忽略大小写 g代表全局匹配 s忽略空白包括换行
汉字与字符属性
每一个语言和字符都有对应的属性,我们可以通过属性来正则匹配,比如匹配汉字,韩文,标点符号等,通过网站查找属性,匹配的时候如下还要配合u
语法是\p{属性值}
原子表中有些字符没别的函数需要注意
[.+]在原子表中就是.和+没有在正则中的特殊含义
+ ? * {} 等正常是贪婪模式, 加上?就是不贪婪
/h\d+/ + 代表1个或者多个,那么贪婪就是多个,默认都是贪婪 但是/h\d+?/就是匹配一个h\d
/h\d*/ * 代表0个或者多个,那么贪婪就是多个,默认都是贪婪 但是/h\d*?/就是匹配一个0个h
/h\d?/ * 代表0个或者一个,那么贪婪就是一个,默认都是贪婪 但是/h\d??/就是匹配0个是h
/h\d{2,3}/ * 代表2个或者3个,那么贪婪就是2个,默认都是贪婪 但是/h\d{2,3}?/就是匹配2个是h和两个数字
'hdddd'.match(/h.?/) 匹配hd 'hdddd'.match(/h.??/) 匹配h
在原子组中有$符号
2 配合repalce
在正则原子组匹配中的\1 \2 等等
hhhh
/<(h[1-6])>\w+</\1>/
\1代表的是跟第一个原子组相同的匹配
replace中用正则替换使用$符号
2 同上,以此类推
原子组别名
/(?)/ 这就是给这个组起名为link $ 在字符串的match方法中的groups就能看到这个不是undefined了就有值了
字符串方法中使用正则方法replace match matchAll search
正则方法test exec
test验证付不符合正则
exec方法可以看看跟字符串方法macth的区别
正则断言 断言只是条件,不在结果内
?= 匹配后面
/后盾人(?=教程)/ 正则匹配后盾人并且后面后盾人后面有教程两个字的才匹配
注意这个()不是组的意思所以不会放在组里面
?<= 匹配前面 断言这个匹配的前面是否符合条件
?! 断言不等于 限制后面不是谁
?<! 限制前面不等于