【问题标题】:How to validate ip address in C#如何在 C# 中验证 IP 地址
【发布时间】:2011-10-05 03:34:48
【问题描述】:

我正在做一个使用 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。

有人可以帮忙吗?

【问题讨论】:

  • 请学习如何正确格式化您的问题。
  • -1 没有解释你正在使用正则表达式(如果是这样的话)。什么是“bt”?为什么格式这么差?阅读:stackoverflow.com/editing-help
  • 使用正则表达式进行这种验证似乎不必要地耗费脑力。为什么不按. 拆分并以更传统的方式验证 IP 地址的每个部分?
  • @spender, @ba_friend:为什么不帮助编辑帖子以改进格式,而不仅仅是抱怨?你们都有代表来帮忙!
  • 但它真的需要为-1吗?这肯定是笔记的用途吗?您培养并获取信息,100 分低的人不会立即知道该站点是如何工作的。帮助他们成长并成为社区的一部分。我马上就离开我的肥皂盒。我认为这是一个持续的争论。我会看看这是否在meta上。我知道作为一个社区网站,我们对内容负责,但是对于一个年轻的人来说,他们甚至在他们开始之前就被 -2 标记了。我们应该如何以如此苛刻的理想发展社区。今天培养一个菜鸟。你会感觉好多了。

标签: c# regex validation ip ip-address


【解决方案1】:

使用

IPAddress addr = IPAddress.TryParse(str);

然后,如果可行,请使用

addr.GetAddressBytes();

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

【讨论】:

  • 再见,它也验证 1 为真并将 ipaddress 设置为 0.0.0.1
  • 是的“1”是一个有效的IP地址,意思是0.0.0.1
  • 对于网络专家来说,这可能是可以理解的,但不希望对非专业用户的应用程序的输入文本框进行验证。
  • 问题是如何验证地址中的各个字节是否具有适当的值。在这种特定情况下,要求至少为 1.0.0.1,这只能从包含四个八位字节的字符串中实现。如果您想接受任何 IP 地址但验证用户已输入所有四个八位字节,那么以这种方式解析是不够的。
  • 我已经对答案投了赞成票,我刚刚为正在寻找 IP 地址字符串验证的开发人员添加了我的第一个注释。像我这样的。 :) 干杯
【解决方案2】:

免去痛苦!转换为字符串,在点字符上拆分,并检查 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

【讨论】:

    【解决方案3】:

    试试这个,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2011-04-11
      • 2013-07-08
      • 1970-01-01
      • 2013-04-16
      • 2010-09-24
      相关资源
      最近更新 更多