符号
. 任意字符
s 空格符
S 非空格符
d 数字
D 非数字
w 数字,字母,_
W 非数字,字母,_
[] 原子表,匹配其中的任意一个字符,在[]任何字符只带有自己符号意思
() 原子组 可以简便写法,并且是整体检验,不同于原子表,原子组匹配的内容会显示在matchAll中
(?<name>)原子组别名,通过?<name>给当前院子组取别名name
{} 量词 代表数量
+ 1个或多个
? 0个或1个
*任意个
^ 头部
$ 尾部
[^] 非
\ 转义符
i 不区分大小写
g 全局
s 不区分换行符
$& 匹配本身 存在于””中
$` 匹配内容给的前面部分 存在于””中
$’ 匹配内容后面部分 存在于””中
?= 断言匹配 等于 可以理解为正则匹配的条件语句只有符号才会匹配上,正则上写入/?=’条件’/
?!断言匹配 不等于
?<= 前面等于
?<! 前面不等于
lastIndex 正则拥有的对应位置符号
原子表的内容会被缓存,通过\1\2\3\4来共同使用,而且可以通过$1,$2,..等来访问,如何识别呢,从左往右数(这个符号,按顺序编成1,2,3等 ?:这俩个符号可以清楚组,也就是不记录组
量词后面跟着?会产生禁止贪婪模式,一般的量词都会贪婪选择,比如
121111 /[1-9]+/ 这个就会返回121111,结果是往最大方向走,而如果/[1-9]+?/ 就只会返回1(禁止贪婪)
禁止贪婪使用场景,比如嵌套的标签中会因为标签相似过多导致匹配出现错误,所以使用禁止贪婪能够解决针对最少匹配情况
技巧:
可以通过将不同的正则规则放入一个数组中,在全部对输入值进行正则匹配,若全部true则为true,否则false
String.Match 可以打印出多个匹配的情况,或者单个的具体情况
String.MatchAll 可以返回一个每个匹配到的情况的具体匹配情况的迭代器interator
String.search 同样可以使用正则
Exec 必须配合全局符号 g来使用,否则lastindex永远都是第一个匹配的Index,不会改变