正则表达式匹配问题:192.168.X.Y中X值20无法匹配
解决你的正则匹配问题
我一眼就看出问题出在你写的[1|2|5|20]这里啦——正则里的方括号[]是字符集,它只会匹配其中的单个字符,所以这里实际能匹配的是1、|、2、5、0这些单个字符,根本不会把20当成一个整体来匹配,这就是为什么192.168.20.123匹配失败的原因。
要实现匹配X为1、2、5、20的需求,你需要用**圆括号()**来做分支匹配,把这些选项当成整体来处理。修正后的正则应该是:
192\.168\.(1|2|5|20)\.[0-9]{1,3}
不过这里提个小细节:你原来的[0-9]{1,3}会匹配0到999的数字,但IP地址里的Y段合法范围是0-255,如果需要严格符合IP规则的话,可以把最后一段改成(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),不过你说其余逻辑正确,这个就看你的实际需求啦。
现在用修正后的正则测试你的例子:
192.168.2.123→ 匹配成功192.168.5.123→ 匹配成功192.168.20.123→ 匹配成功- 像
192.168.3.123这种不符合X要求的,也会正确匹配失败。
内容的提问来源于stack exchange,提问作者KaSkuLL
相关产品推荐
相关产品推荐

