【发布时间】:2012-04-17 21:15:49
【问题描述】:
我想验证该值是否是有效的 IP 地址..!
我曾经验证喜欢
ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
它工作正常,但是当我给出像 12345678 这样的值时,它也返回 true..
如何解决?
【问题讨论】:
-
"2001:0db8:85a3:0000:0000:8a2e:0370:7334" 根据该正则表达式也不是有效的 IP。 IPv6 是新标准 :)
-
提示:下面的许多答案都使用
\d,它比[0-9]更紧凑,但如果您使用[0-9],它对正则表达式引擎更有效。见stackoverflow.com/questions/16621738 -
我相信很多人都知道,4 个八位字节的点分十进制并不是唯一有效的 IPv4 格式。可以通过八进制 0010.0010.0010.0010、十六进制 0x08.0x08.0x08.0x08 和任意数量的其他格式访问 Google 的 8.8.8.8 服务器。大多数 IPv4 实现也会接受缺失的八位字节为有效。所以,8.8 变成了 8.0.0.8 - 是的,真的。最后,如果您正在测试“有效性”,您是否担心它是 RFC1918(“本地”)地址、多播或其他一些可能不是预期的地址(例如 C 类广播 .255 或网络 .o)?这个讨论可能会帮助superuser.com/questions/929153
-
请使用我在这篇文章中的回答:stackoverflow.com/questions/23483855/…,这是迄今为止最准确的回答。
标签: javascript regex