regex 正则表达式匹配带掩码的IPv4

slmsl1lt  于 2023-05-19  发布在  其他
关注(0)|答案(3)|浏览(126)

我正在通过正则表达式验证IPv4地址,但它不支持子网掩码。

^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$

有没有人可以帮助我的正则表达式,支持面具以及。
下面是这个正则表达式的一个工作示例:demo

a14dhokn

a14dhokn1#

在正则表达式的末尾添加(?:/[0-2]\d|/3[0-2])?。你也可以简化正则表达式:

^([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.(?:[01]?\d\d?|2[0-4]\d|25[0-5])){3}(?:/[0-2]\d|/3[0-2])?$
xjreopfe

xjreopfe2#

在您的示例中,如果希望它与两个地址都匹配,请删除开头的^和结尾的$

bjg7j2ky

bjg7j2ky3#

下面是一个正确的IPv4子网正则表达式,没有任何与正确符号匹配的lookahead。

掩码可选版本:

^(([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])(\/(3[0-2]|[1-2]?\d))?$

匹配示例:

  • 0.0.0.0/0
  • 255.255.255.255/32
  • 100.70.60.50 (此版本不支持掩码)
    拒绝示例:
  • 001.01.01.01/09 (与当前接受的答案匹配)
  • 256.0.0.0/30 (256超出范围!)
  • 100.70.60.50/33 (33出界)
  • 100.70.60.50/ (不完整掩码)
    Mask REQUIRED Version:如果您想要一个需要掩码的版本,请使用以下内容:
^(([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])\/(3[0-2]|[1-2]?\d)$

相关问题