一丶字符匹配范文
可能编排显示混乱,可以看图
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A | 精确匹配单个字符 | A | a |
x|y | 允许出现的两个字符 | y | n |
[xyz] | 字符集合,允许出现集合内任意单个字符 | z | c |
[a-z] [A-Z] [0-9] |
字符范围 | a D 8 |
A a A |
[^xyz] [0-9] |
集合内字符不允许出现 | 0 A |
y 8 |
例题
1.精准匹配字符串“Hello” 或者“Hallo”
H[ae]llo
2.匹配数字范围(0570-0579)
057[0-9]
3.单选题只允许输入ABCD其中一项
[ABCD]
二丶元字符
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
\d | 匹配任意单个数字 | 8 | i |
\D | 匹配\d规则之外的任意单个字符 | i | 8 |
\w | 匹配任意单个字母数字下划线 | Y | & |
\W | 匹配\w之外的任意单个字符 | & | Y |
\s | 匹配单个空格 | x | |
\n | 匹配单个换行符 | x | |
. | 匹配任意单个字符(换行符除外) | – | – |
\. | 特殊字符,只匹配. | . | 1 |
例题
1.匹配数字(3213.383219)
\d\d\d\d\.\d\d\d\d\d\d
2.匹配杭州与宁波座机号码(0571|0574-xxxxxxxx)
057[1|4]-/d/d/d/d/d/d/d/d
3.请匹配18位身份证号
[12345678]\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d[0-9xX]
三丶多次重复匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
A | 精准N次匹配 | AAA | AA |
A | 最少出现N次 | AAA AAAA |
AA |
\d | 约定出现最少次数与最大次数 | 1234 | 12 |
\d* | 可以出现零次至无限次,相当于 | 1234 | – |
\d+ | 最少出现一次,相当于 | 12 | |
\d? | 最多出现一次,相当于 | 1 | 12 |
例题
1.验证短信验证码(6位数字)
\d{6}
2.匹配全国座机号(区号3或4位-电话号码7或8位)
\d{3,4}-\d{7,8}
3.匹配英文姓名(例如:James Watson)
[A-Z]{1}[a-z]{1,}\s[A-Z]{1}[a-z]{1,}
四丶定位匹配
正则表达式 | 说明 | 正确 | 错误 |
---|---|---|---|
^A.* | 头匹配 | ABC | CBA |
.*A$ | 尾匹配 | CBA | ABC |
^A.*A$ | 全字匹配(头尾匹配) | ACCCA | ACCCB |
五丶贪婪模式
解释:
1.在满足条件的情况下尽可能多匹配到字符串
示例 : 111222333 正则: \d{6,8}
匹配结果: 11122233
六丶非贪婪模式
解释:
1.在满足条件的情况下尽可能少匹配到字符串
示例 : 111222333 正则: \d{6,8}? 使用? 表示使用非贪婪模式
匹配结果:111222
简单使用案例:
例如我们需要提取标签中的href中的超链接
<a href="http://www.baidu.com">百度</a><a href="http://mail.163.com">网易邮箱</a>
正则表达式: ".*" 错误
".?" 正确
七丶表达式分组
解释:
分组将"正则"分组为多个子表达式
示例: abababcdcdcd
正则表达式: (ab){3}(cd){3}
例题
1.匹配验证码(4位或者6位)
例如匹配 7777
^\d{4}$
匹配 4或6位需要分组
(^\d{4}$)|(^\d{6}$)
2.匹配车牌号(冀A-U888G)
^[冀黑粤晋][A-Z]-[A-Z0-9]{5}$
^([冀黑粤晋][A-Z])-([A-Z0-9]{5})$
3.匹配中文或英文姓名
例如匹配Michael Jackson
^[A-Z][a-z]+\x[A-Z][a-z]*$
匹配中文张三
^[\u4e00-\u9fa5]{2,8}$
分组后
(^[A-Z][a-z]+\x[A-Z][a-z]*$)|(^[\u4e00-\u9fa5]{2,8}$)
评论区