正则表达式
- 正则表达式是检查、匹配字符串的表达式
- 正则表达式是描述规则,主流语言都有良好的支持
- 字符串校验、查找与替换是正则表达式主要使用场景
正则表达式验证工具
正则表达式语法
字符范围匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A | 精准匹配单个字符 | A | a |
x|y | 匹配两个字符中的任一个 | y | n |
[xyz] | 匹配字符集合中的任一单个字符 | z | c |
[a-z] | 匹配字符范围中的任一个 | c | Y |
[^0-9] | 匹配除字符范围中的任一个 | a | 5 |
元字符
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
\d | 匹配任一单个数字 | 8 | w |
\D | 匹配\d规则以外的任一单个字符 | w | 8 |
\w | 匹配任一字母数字及下划线 | h | % |
\W | 匹配\w之外的任一单个字符 | % | h |
\f | 匹配单个换页符 | 等价于 \x0c 和 \cL | |
\r | 匹配单个回车符 | 等价于 \x0d 和 \cM | |
\t | 匹配单个制表符 | 等价于 \x09 和 \cI | |
\v | 匹配单个垂直制表符 | 等价于 \x0b 和 \cK | |
\s | 匹配任一不可见字符(空格、换行符等) | x | |
\S | 匹配任一可见字符,等价于[^\f\n\r\t\v] | a | |
\n | 匹配单个换行符 | x | |
. | 匹配任一字符(换行符除外) | w | |
\. | 只匹配. | . | a |
多次重复匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A{3} | 精准N次匹配 | AAA | AA |
A{3,} | 最少出现N次 | AAA | AA |
\d{3,5} | 约定最小最大出现次数 | 1234 | 12 |
\d* | 可以出现0次至无限次,相当于{0,} | 234 | |
\d+ | 最少出现一次,相当于{1,} | 5 | |
\d? | 最多出现一次,相当于{0,1} | 1 | 123 |
定位匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
^A.* | 头匹配 | ABC | BBC |
.*A$ | 尾匹配 | CBA | ABC |
^A.*A$ | 全字匹配 | ABA | ABB |
贪婪模式与非贪婪模式
字符串:111222333
贪婪模式:在满足条件的情况下尽可能多匹配到字符串
正则表达式:\d{6,8} 匹配结果:11122233
非贪婪模式:在满足条件的情况下尽可能少匹配到字符串
正则表达式:\d{6,8}? 匹配结果:111222
表达式分组
- 分组将正则表达式分组为多个子表达式
- 示例:abababcdcdcd
- 正则表达式:(ab){3}(cd){3}
其他常用正则表达式
正则表达式 | 含义 | 正确 | 错误 |
---|---|---|---|
[\u4e00-\u9fa5] | 匹配单个汉字 | 哈 | a |
er\b | 匹配一个单词的边界 | nerver | verb |
er\B | 匹配非单词的边界 | verb | never |