使用正则表达式验证IP

时间:2009-02-17 07:54:21

标签: regex

我需要验证格式为000000000到255255255的IP范围,而3组数字之间没有任何分隔符。 最终IP所包含的三个组中的每一个都应该是000(是,0填充)到255。

由于这是我的第一个stackoverflow条目,如果我没有正确遵循礼仪,请宽容。

5 个答案:

答案 0 :(得分:8)

^([01]\d{2}|2[0-4]\d|25[0-5]){3}$

以下部分分类:

  1. 000-199
  2. 200-249
  3. 250-255
  4. 如果您决定需要4个八位字节而不是3个八位字节,只需将最后一个{3}更改为{4}即可。此外,您也应该了解IPv6。

答案 1 :(得分:5)

我个人不会使用正则表达式。我认为更容易确保字符串由9位数字组成,将字符串分成3组3位数字,然后检查每个数字是否在0到255之间(包括0和255)。

如果你真的坚持正则表达式,那么你可以使用这样的东西:

"([0-1][0-9][0-9]|2[0-4][0-9]|25[0-5]){3}"

该表达式包含三个术语的交替:第一个匹配000-199,第二个200-249,第三个250-255{3}要求匹配三次。

答案 2 :(得分:1)

这是一个非常常见的问题。 Here是关于regexp的一个很好的介绍页面,以这种情况为例。它包括句号,但你可以很容易地编辑它们。

答案 3 :(得分:0)

仅用于匹配有效的IP地址

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}

而不是

([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])){3}

因为许多正则表达式引擎匹配OR序列中的第一种可能性

你可以试试你的正则表达式引擎:10.48.0.200

答案 4 :(得分:0)

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

我使用此RegEx在我的项目代码中搜索所有ip