【问题标题】:Need IP Address mask and DNS host name regular expressions?需要 IP 地址掩码和 DNS 主机名正则表达式?
【发布时间】:2013-03-18 13:01:15
【问题描述】:

我需要允许来自文本框的 IP/DNS 名称。我正在寻找适用于 IP 的 IP 正则表达式。

现在我使用一个正则表达式:

/\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/

适用于 0-255 范围。但允许无效IP,例如:121.21.05.234.01,它有5个部分。

我需要一个适用于所有场景的正则表达式,如下所示:

10.2.22.1        - true
123.123.123.123  - true
123.123.023.12   - true
12.23.12.0       - true
121.21.05.234.01 - false

请同时提供 DNS 表达式。

【问题讨论】:

  • 模式中的\b 匹配单词边界,即a-zA-Z0-9_ 和任何非这些字符之间的(有效)空格。第 5 个八位字节的点符合“任何不是那些”的条件,这就是您的模式仍然匹配的原因。查看 sp00m 的回答。

标签: regex dns


【解决方案1】:

尝试使用^$ 对您的正则表达式进行anchor,这将使其匹配整个字符串。

【讨论】:

    【解决方案2】:

    您是否正在寻找一种方法来指定出现次数? 您可以使用大括号来实现这一点。 一个例子here

    在你的情况下,它会导致:

    /\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]?)){3}\b/
    

    (我也添加了\ 来转义点)

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2021-10-26
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2011-04-13
      • 1970-01-01
      相关资源
      最近更新 更多