用于范围的IP验证的正则表达式?

时间:2010-06-22 04:40:22

标签: regex ip-address

我需要一个验证IP地址的正则表达式模式。这很容易谷歌,但我有一个小问题。我需要最后一个数字才能接受范围。因此,以下输入将验证。

XXX.XXX.XXX.X-Y

类似于168.68.2.1-34

我找到了普通IP地址的模式,但没有找到处理范围的模式。

3 个答案:

答案 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函数从点符号转换为整数(这将隐式检查格式是否正确)。

将地址作为整数后,您可以检查它是否在有效范围内,就像检查任何其他整数一样(<和>,最有可能)。