- 正则表达式是检查,匹配字符串的表达式
- 正则表达式是描述规则,主流语言都有良好支持
- 字符串校验,查找与替换是正则表达式主要使用场景
例如 一个检查输入身份证是否合法的案例
一个人的身份证有18位 例如 13010220200328091x
如果这个让我们用普通的程序思路来校验的话,就会费一些功夫,但是如果我们用正则表达式来做的话,就非常简单了
正则表达式:(^d{15}$)|(^ld{18}$)|(^d{17}(d|X|x)$) 这样是不是就一句话就搞定呢了,接下来,我们来了解一下正则表达式
正则表达式测试所用工具连接: 正则表达式在线测试工具
正则表达式基础语法 字符范围匹配| 正则表达式 | 说明 | 正确 | 错误 |
|---|---|---|---|
| A | 精准匹配单个字符 | A | a |
| x|y | 允许出现的2个字符 | y | n |
| [xyz] | 字符集合,允许出现集合内任意单个字符 | z | c |
| [a-z] [A-Z] [0-9] | 字符范围 | a D 8 | A a A |
| [^xyz] [^0-9] | 集合内字符不允许出现 | 0 A | y 8 |
元字符注:正则表达式中区分大小写
| 正则表达式 | 说明 | 正确 | 错误 |
|---|---|---|---|
| d | 匹配任意单个数字 | 8 | i |
| D | 匹配d规则之外的任意单个字符 | i | 8 |
| w | 匹配任意单个字母数字下划线 | Y | & |
| W | 匹配w之外的任意单个字符 | & | Y |
| s | 匹配单个空格 | x | |
| n | 匹配单个换行符 | x | |
| . | 匹配任意单个字符(换行符除外) | – | – |
| . | 特殊字符,只匹配 . | . | 1 |
| 正则表达式 | 说明 | 正确 | 错误 |
|---|---|---|---|
| A {3} | 精准N次匹配 | AAA | AA |
| A {3,} | 最少出现N次 | AAA | AA |
| d {3,5} | 约定出现最少次数与最大次数 | 1234 | 12 |
| d * | 可以出现零次至无限次,相当于{0,} | 1234 | – |
| d + | 最少出现一次,相当于{1,} | 12 | |
| d ? | 最多出现一次,相当于{0,1] | 1 | 12 |
| 正则表达式 | 说明 | 正确 | 错误 |
|---|---|---|---|
| ^ A.* | 头匹配 | ABC | CBA |
| .*A $ | 尾匹配 | CBA | ABC |
| ^ A.* $ | 全字匹配 | ACCCA | ACCCB |
- 在满足条件的情况下尽可能多匹配到字符串
示例: 111222333 正则: d{6,8}
匹配结果: 11122233
非贪婪模式贪婪模式是正则表达式的默认匹配规则
- 在满足条件的情况下尽可能少匹配到字符串
示例: 111222333 正则: d{6,8}?
匹配结果: 111222
取决于用什么模式的关键是 ? 号
举个例子 我们要提取一个字符串中的网址,如果用贪婪模式
这样就不是我们预期想要的需求,我们使用非贪婪模式
- 分组将 “正则” 分组为多个子表达式
- 示例: abababcdcdcd
- 正则表达式: (ab){3}(cd){3}
正则表达式支持使用unicode编码来表达特殊的字符,如[u4e00-u9fa5] 这个就是匹配单个汉字的区间



