代码之家  ›  专栏  ›  技术社区  ›  Ed James

匹配IP地址+通配符的正则表达式

  •  6
  • Ed James  · 技术社区  · 16 年前

    我正在使用以下正则表达式:

    "([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}"
    

    有人对更好的Regex或者为什么它可以在测试中工作而不是在原位工作有什么建议吗?

    5 回复  |  直到 16 年前
        1
  •  3
  •   VeeArr    16 年前

    asp:RegularExpressionValidator

    ([0-9]{1,3}\.|\*\.){3}([0-9]{1,3}|\*){1}

        2
  •  5
  •   Community Mohan Dere    9 年前

    \\.|\\*\\. 看起来有点狡猾。请改为:

    @"^(([0-9]{1,3}|\*)\.){3}([0-9]{1,3}|\*)$"
    

    apoorv020 ):

    ^((([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)\.){3}(([0-9]{1,2})|(1[0-9]{2,2})|(2[0-4][0-9])|(25[0-5])|\*)$
    
        3
  •  2
  •   apoorv020    16 年前

    [0-9]{1,3}将允许使用999.999.999.999形式的IP地址。您的IP地址范围应该只允许0-255。

    这对我来说确实很复杂,也许有更好的方法,但乍一看似乎是正确的。

        4
  •  1
  •   Mike    16 年前

    在表达式中添加起始和结束字符串如何

    ^([0-9]{1,3}\\.|\\*\\.){3}([0-9]{1,3}|\\*){1}$
    
        5
  •  0
  •   przemoc    16 年前

    我的答案是.NET的通用答案,而不是 RegularExpressionValidator -具体的。

    ExplicitCapture 为了避免无用的捕捉并保持简洁):

    "\\b0*(2(5[0-5]|[0-4]\\d)|1?\\d{1,2})(\\.0*(2(5[0-5]|[0-4]\\d)|1?\\d{1,2})){3}\\b"
    

    根据特定的用例,您可能需要添加适当的锚,即。 \A ^ 开始和结束时 \Z $ 最后。然后可以删除单词边界要求: \b .

    \ 在弦内)