如何在C#中验证IP地址

时间:2011-07-14 08:30:16

标签: c# regex validation ip ip-address

我正在做一个使用IP地址的应用程序。我必须验证它们至少从1.0.0.1开始,但是使用下面的代码它接受0.0.0.0:

\b(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]?)\.(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]?)\b

我也尝试将其更改为:

\b(25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)\.(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]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

此代码不接受0.0.0.0,但也不接受100.0.0.0到109.0.0.0。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:10)

使用

IPAddress addr = IPAddress.TryParse(str);

然后,如果有效则使用

获取数字
addr.GetAddressBytes();

然后使用正常的if-cases检查字节值是否正确。

答案 1 :(得分:1)

救你自己的痛苦!转换为字符串,在点字符上拆分,并检查4个段中的每一个是否在0或1到255范围内。

否则,如果您使用RegexBuddy(这是一个非常出色的RegEx应用程序),它在Library inc中有一堆IP地址示例,用于0.0.0.0到255.255.255.255:

\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b

答案 2 :(得分:0)

尝试使用它,

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])$";