我正在使用IPAddress.TryParse来验证IP地址,但是如果我使用
if (IPAddress.TryParse("192.168.1.009", out ip)
失败了,但是
if (IPAddress.TryParse("192.168.1.007", out ip)
通过。基本上,如果最后一个数字是8或9,则它在有效的IP地址上失败。
我不知道如何才能让它发挥作用?
答案 0 :(得分:4)
快速猜测:
009
和007
被解释为八进制数,而007
是base-8中的有效数字,而009
则不是。
请尝试if (IPAddress.TryParse("192.168.1.9", out ip))
。
答案 1 :(得分:0)
你的最后一部分以0
开头,以零开头的四边形必须被视为基数8(八进制)数,因此例如任何以零开头且包含数字8或9的四边形部分不是有效。如果你尝试“192.168.018.110”..这也将失败..请看下面你的评论问题
答案 2 :(得分:0)
您可以使用正则表达式进行更改格式:
IPAddress ip;
string ipString = "192.168.1.009";
string goodIpString = Regex.Replace(ipString, @"[0]+(\d+)", "$1");
var res = IPAddress.TryParse(goodIpString, out ip); // true