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