使用正则表达式验证IP地址

4

我需要验证一个IP范围,格式为000000000到255255255,三组数字之间没有分隔符。

最终IP由三组数字组成,每组数字应该是000(是的,前导零)到255。

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


你的 IP 地址只包含3个数字而不是4个吗? - David Segonds
请问您能给我们一些输入字符串的示例吗?示例会很有帮助。 - David Segonds
5个回答

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

以下是对它的分解:

  1. 000-199
  2. 200-249
  3. 250-255

如果您决定要使用4个八位字节而不是3个,只需将最后一个 {3} 改为 {4}。此外,您还应该了解IPv6。


顺便说一下,内部括号不是必需的,因为连接比交替具有更高的优先级。 - Zach Scrivena

5

我个人不会使用正则表达式来实现这个功能。我认为更简单的方法是确保字符串由9个数字组成,将字符串分成三组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}要求精确匹配三次。

1

这是一个非常普遍的问题。这里 有一个很好的正则表达式入门页面,并且以此案例为例。它包含点号,但您可以轻松地编辑掉它们。


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

我使用这个正则表达式来搜索我的项目代码中的所有IP地址


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接