【发布时间】: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