使用分支重置组正则校验IPv4地址时末位八位组匹配异常
IPv4校验正则的匹配逻辑异常
用于实现IPv4地址合法性校验的正则表达式编写如下:
^((?|([0-9][0-9]?)|(1[0-9][0-9])|(2[0-5][0-5]))\.){3}(?2)$
实际运行时出现的问题:
- 多数场景下,正则可正常匹配IP地址的前三个带句点分隔的八位组
- 匹配最后一个不带句点的八位组时,仅能命中分支重置组内的第一个备选分支,其余两个备选分支的匹配逻辑完全失效
- 已明确了解分支重置组的核心规则:组内所有备选分支会共享同一套捕获组编号
- 此前按照捕获组复用的实现方案调整过正则逻辑,但调整后仅能部分达到预期匹配效果,实际输出的匹配结果存在明显偏差
上述匹配偏差可通过通用正则测试工具直接复现
内容的提问来源于stack exchange,提问作者Sandeep Gusain
相关产品推荐
相关产品推荐

