用一个字节的IP地址由4首或更多个零有效的IP地址给?(Is an IP address with

2019-10-20 16:03发布

该顶部投票答案在这里验证的IP地址( 这是一个正则表达式,所以自动不利的 ),如果你在一个字节4首或更多个零给它一个IP地址返回false。

请注意,它通过与3或更低,这在我看来,自动显示代码的气味,由于任意不一致(毕竟它不是基数为8,因此没有什么特别的底座10约3)。 然而,令人惊讶的是Apache的百科全书实用InetAddressValidator也有这种行为(至少它仅使用了正则表达式分裂!)。

观察(使用的Scala REPL):

scala> new InetAddressValidator().isValidInet4Address("000.0.0.0")
res0: Boolean = true

scala> new InetAddressValidator().isValidInet4Address("0000.0.0.0")
res1: Boolean = false

现在, 这个答案 ,因为它的使用将返回true, parseInt在一个循环中,这使得零的数字之间的任意区别。

因此,它是有效的? 如果它是有效的,那么这表明在Apache的百科全书库和正则表达式表示一个错误,如果它是无效,则请提供的东西的链接,证明了这一点

Answer 1:

是的,它是有效的。

一个except从上点分十进制维基百科文章有关IPv4地址:

因特网协议版本4(IPv4)地址由32位组成,其可以被划分为四个八位字节,每个字节8位。 这些四个八位组被写入以十进制数,范围从0到255,并且被连接为字符串与数之间句号分隔符。

有效的十进制数可能会或可能不会与领先0的开始,应该是没有内在限制的前导0的个数。 维基页面确实澄清前导0是有效的,但没有明确提到对前导零的数的限制。



文章来源: Is an IP address with an octet given by 4 or more zeros a valid IP address?
标签: java regex ip ipv4