符号说明
不方便书写的符号使用转义符 "\" 来取消特殊语义例如^表示字符串的开始\^则表示匹配^这个符号。
通常大写表示反义词例如\d表示匹配数字,\D表示匹配非数字
常用匹配字符
符号 | 说明 |
. | 匹配除换行外的所有字符 |
\w | 匹配所有字母数字,等同于 [a-zA-Z0-9_] |
\d | 匹配数字: [0-9] |
\s | 匹配所有空格字符,等同于: [\t\n\f\r\p{Z}] |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符 |
字符,数字,空格字符有反义匹配即\W,\D,\S
限定符,量词
符号 | 说明 |
* | 出现0次或多次 |
+ | 出现1次或多次 |
? | 出现0次或1次 |
{n} | 出现n次 |
{n,m} | 出现n次至m次,可不写n或m表示至少n次或至多m次 |
贪婪匹配
默认为贪恋匹配,即默认尽可能多的匹配
"/(.*at)/" =>
The fat cat sat on the mat.
惰性匹配
在量词后加上?可将匹配模式修改为惰性匹配,尽可能少的匹配
"/(.*?at)/" =>
The fat cat sat on the mat.
定位符
定位符仅匹配位置并不匹配指定字符
符号 | 说明 |
^ | 开始位置 |
$ | 结束位置 |
\b | 匹配单词的开始或结束 |
\B | 匹配非单词的开始或结束 |
范围
符号 | 说明 |
| | 匹配左侧或者右侧, x|y 表示匹配x或者y,左右可以是分组 |
[] | 括号内为匹配范围,[avd],表示avd三个字母都可匹配 |
[a-z] | 表示匹配连续的范围a到z |
[^a-z] | 表示匹配a到z之外的任意字符 |
分组
符号 | 说明 |
() | 括号内为子表达式,子表达式可被引用 |
\n | n为1-9之间的数字,在正则表达式中来引用表达式中的分组,例如(a)\1,等价于aa |
分组之后的表达式可在文本编辑器中使用$n来引用
其他
正则表达式修饰符
不同语言对正则表达式有不同的修饰符例如忽略大小写,多行匹配等,js是在/表达式/修饰符 中配置。具体需要看使用语言中的实现。 js中正则表达式的标记,可组合使用,在正则表达式最后加上符号
符号 | 说明 |
g | 全局匹配 |
i | 不区分大小写 |
m | 多行搜索 |
s | 允许.匹配换行符 |
- 默认正则会返回第一个匹配的结果,加上全局匹配后会返回所有匹配的结果
"/.(at)/" =>
The fat cat sat on the mat.
"/.(at)/g" =>
The fat cat sat on the mat.
特殊字符匹配
符号 | 说明 |
\xXX | 编号在 0 ~ 255 范围的字符,比如:点击测试 空格可以使用 "\x20" 表示 |
\uXXXX | 任何字符可以使用 "\u" 再加上其编号的4位十六进制数表示,比如:点击测试 "\u4E2D" |
匹配规则,环视
符号 | 说明 |
(?:pattern) | 捕获但不单独获取结果 |
(?=pattern) | 肯定查询,仅当匹配字符串符合后缀匹配内容才判定为匹配,例如Windows(?=95|98|NT|2000) |
(?<=pattern) | 效果同上但放在字符串前,匹配前缀,例如 (?<=95|98|NT|2000)Windows |
(?!pattern) | 否定查询,仅当匹配字符串不符合匹配后缀才判定为匹配 |
(?<!pattern) | 效果同上但放在字符串之前,匹配前缀,例如 (?<!95|98|NT|2000)Windows |
资料
- 将正则表达式图形化,方便理解
2.在线测试正则
https://regex101.com/r/AyAdgJ/1
- 参考资料
https://blog.csdn.net/hello_word2/article/details/84890548
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
https://www.runoob.com/regexp/regexp-tutorial.html
http://www.regexlab.com/zh/regref.htm
https://xie.infoq.cn/article/dcc7103126233028945c67c43
https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md