如何在C#中验证IP地址

jam*_*mes 5 c# regex ip validation 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
Run Code Online (Sandbox Code Playgroud)

我也尝试将其更改为:

\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
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮忙吗?

And*_*ren 10

使用

IPAddress addr = IPAddress.TryParse(str);
Run Code Online (Sandbox Code Playgroud)

然后,如果有效,请使用数字

addr.GetAddressBytes();
Run Code Online (Sandbox Code Playgroud)

然后使用正常的if-cases检查正确条件的字节值.

  • 再见,它也将1验证为真,并将ipaddress设置为0.0.0.1 (2认同)
  • 对网络专家来说,Yap可能是可以理解的,但不希望在非专业用户的应用程序上对输入文本框进行验证. (2认同)
  • 我已经投了答案,我刚刚为正在寻找ip地址字符串验证的开发人员添加了我的第一个注释.像我这样的.:)干杯 (2认同)

Bar*_*aye 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
Run Code Online (Sandbox Code Playgroud)