我需要一个验证IP地址的正则表达式模式。这很容易谷歌,但我有一个小问题。我需要最后一个数字才能接受范围。因此,以下输入将验证。
XXX.XXX.XXX.X-Y
类似于168.68.2.1-34
我找到了普通IP地址的模式,但没有找到处理范围的模式。
答案 0 :(得分:4)
要接受0到255之间的数字,我会使用(25[0-5]|2[0-4]\d|[0-1]?\d{1,2})
。调用上面的表达式A,IP范围的正则表达式看起来像
A\.A\.A\.A-A
或
(A\.){3}A-A
如果范围是可选的,请使用(-A)?
代替-A
。
这不会检查范围的开头是否小于结束,但是在正则表达式中无法通过合理的努力来完成。
答案 1 :(得分:3)
那么,它只会是:
(normal-ip-regex)-[0-9]+
如果你需要比这更复杂的东西,那么我会说你最好的办法是实际解析数字并以这种方式验证它们(例如,如果你想确实“X”小于“ Y“然后用正则表达式无法做到这一点。”
答案 2 :(得分:2)
验证IP地址的“更好”方法是将它们转换为整数。记住点符号只是为了让人们更容易阅读。
我不知道你使用的语言是什么,但是大多数都会有inet_aton
函数从点符号转换为整数(这将隐式检查格式是否正确)。
将地址作为整数后,您可以检查它是否在有效范围内,就像检查任何其他整数一样(<和>,最有可能)。