JavaWeb之正则表达式详解

tech2022-08-23  116

什么是正则表达式

正则表达式是检查,匹配字符串的表达式正则表达式是描述规则,主流语言都有良好支持字符串校验,查找与替换是正则表达式主要使用场景

例如 一个检查输入身份证是否合法的案例 一个人的身份证有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] 这个就是匹配单个汉字的区间

最新回复(0)