【问题标题】:Validate IPAddress.TryParse with network mask使用网络掩码验证 IPAddress.TryParse
【发布时间】:2019-02-28 10:09:57
【问题描述】:

我想验证(只需检查 IP 地址的格式是否正确,带或不带网络掩码)具有网络掩码的 IP 地址例如:192.168.0.254/32。这应该给出有效 IP 地址的结果。

我可以用这个正则表达式 Regex(@"\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b /\d{1,3}\b|\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b");

但是可以通过 IPAddress.TryParse 或任何其他现有方法验证 IP 地址吗?

编辑以确认不相似的问题:在这里我想检查 IP 地址的格式是否正确,一次检查是否带有网络掩码

【问题讨论】:

  • RE 并未真正验证 IP 地址是否有效。你应该做的更像是(([0-2]\d\d|\d\d?)\.){4}/(3[0-2]|[0-2]\d|\d)
  • 无论如何,您最好还是使用正则表达式。 This answer explains the pitfalls of using IPAddress.TryParse
  • @NetMage:我想验证 IP 地址格式是否有效并且它对我有用。你能举一个我提到的正则表达式不起作用的例子吗
  • \d{1,3} 匹配 999
  • @sln:好的,明白了。我只是想检查 IP 的格式是否仅有效。就像它对 123.121.124.221 有效。我会检查其他选项。

标签: c# regex ip ip-address


【解决方案1】:

这是一种模式,您可以使用正则表达式验证字符串是否代表有效的四字节 IP 地址,带有可选的网络掩码:

(?:(?:[0-2]\d\d|\d\d?)\.){3}(?:[0-2]\d\d|\d\d?)(?:/(?:3[0-2]|[0-2]\d|\d))?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多