正则表达式最全总结

117 阅读2分钟
修饰符说明
i不区分大小写
g搜索时会寻找所有匹配项,没有它,则仅返回第一个匹配项
m多行模式
s允许.匹配换行符\n,使得.匹配所有字符
u开启完整的unicode编码
y在源字符串中的指定位置进行搜索
字符说明
\d数字,匹配0-9中任意一个
\s空格、制表符\t,换行符\n以及其他稀有字符
\w下划线_,字母a-zA-Z
.除了换行符以外任意字符
/./s任意字符
\D非数字
\S除空格以外的其他任何字符
\w非单字字符,除了\w以外的任何字符
|转义字符,有些字符具有其他含义,想要这些匹配这些特殊字符时,需要加上转义字符
以下这些字符如果想要匹配,需要加上转义字符
`[ ] { } ( ) \ ^ $ .? * +`
边界说明
^字符换开始
$字符换结束
^$以空开头,以空结尾,匹配空字符
/^.$/m启动多行匹配,行的开头是 ,行的结尾
\b词边界
\bA\bA是不是一个独立单词
范围和数量说明
[...]搜索给定范围内的任意一个
[a,e,o]匹配a,e,o其中的一个,只有一个
[a-z]范围,此处表示26个小写字母a,b,c,...,z
[^ ]排除范围,匹配除了给定字符以外的任意字符
/选择或
{n}确定数量n
{n,m}出现范围在n次-m次之间
{n,}出现大于等于n次
+一次或一次以上
*0次或以上
0次或一次
量词?量词后面紧跟问号,表示开启这个量词的惰性模式
[]号中一般不需要使用转义符号

image.png

捕获组说明
()将括号内的内容看作一个整体
\1 \2 \N第一个括号内容,第二个括号内容,第N个括号内容
(...)?可选组 括号后带问号的那个组可以存在也可以不存在,都会匹配上
(?...)将该组名字命名为name,在groups中可见
(?:...)非捕获组,匹配组的内容,但不出现在结果中
\K根据名字反向引用,name组匹配的内容
位置断言说明
X(?=Y)X后面紧跟着Y,匹配X
X(?!Y)X后面不是Y,匹配X
(?<=Y)XX前面是Y,X紧跟着Y,匹配X
(?<!Y)XX前面不是Y,匹配X

词边界和^$的区别 []内的转义字符如何使用 非捕获组要怎么理解