【问题标题】:Regular Expression (.Net Regex) for IPv6 and IPv4 [duplicate]IPv6和IPv4的正则表达式(.Net Regex)[重复]
【发布时间】:2012-09-27 10:29:40
【问题描述】:

可能重复:
Regex for IP address

有一个正则表达式匹配 IPv6 AND IPv4 ?
或者,只是 IPv6?

用于 DevExpress UI 控件中的验证掩码。

谢谢。

【问题讨论】:

标签: c# devexpress


【解决方案1】:

我知道您要求使用正则表达式,但您可能想考虑改用 System.Net.IPAddress.TryParse 方法。

【讨论】:

  • 他如何在正则表达式控制字段中使用解析?
  • 谢谢,但我需要它作为 DevExpress UI 控件中的验证掩码。它是一个字符串。
  • TryParse 方法接受一个字符串并返回一个布尔值,它使用一个 out 参数返回 IPAddress 对象。 msdn.microsoft.com/en-us/library/…
  • 您不需要使用 out 值,它会解析 v4 或 v6。
  • 我明白了,但在我的场景中,我需要一个正则表达式字符串,以便将其设置为 UI 控件的字符串属性作为验证掩码。在通过验证之前没有输入,所以我不能使用 System.Net.IPAddress.TryParse 方法
【解决方案2】:

IP4 可能看起来像 "(0?0?[1-9]|0?[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25 [0-4])(\.(0?0?[0-9]|0?[1-9][0-9]|1[0-9][0-9]|2[0-4 ][0-9]|25[0-4])){2}(\.(0?0?[1-9]|0?[1-9][0-9]|1[0-9 ][0-9]|2[0-4][0-9]|25[0-4]))"

这也允许 0,例如 010.000.000.001 ..(因为在我们这里有人认为这样做很聪明)

【讨论】:

    【解决方案3】:

    正则表达式真的很长 =) ip4 的第一行,其余的是 ip6

    ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|
    ((\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,6}\Z)|
    (\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}\Z)|
    (\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}\Z)|
    (\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}\Z)|
    (\A([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}\Z)|
    (\A([0-9a-f]{1,4}:){1,6}(:[0-9a-f]{1,4}){1,1}\Z)|
    (\A(([0-9a-f]{1,4}:){1,7}|:):\Z)|
    (\A:(:[0-9a-f]{1,4}){1,7}\Z)|
    (\A((([0-9a-f]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|
    (\A(([0-9a-f]{1,4}:){5}[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})\Z)|
    (\A([0-9a-f]{1,4}:){5}:[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,1}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A(([0-9a-f]{1,4}:){1,5}|:):(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)|
    (\A:(:[0-9a-f]{1,4}){1,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\Z)
    )
    

    【讨论】:

    • 谢谢,由于某种原因它只能识别 IPv4。
    猜你喜欢
    • 2014-03-05
    • 2014-11-02
    • 2014-02-05
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多