我有正则表达式用于验证 50 个 ips 逗号分隔的列表:
^(?:(?:(?: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]?)(?:,? ?)){1,50}$
列表示例:
10.10.10.1,127.0.0.1
现在我需要支持列表,如下所示:
10.10.10.1,127.0.0.1-127.0.0.125
我尝试使用子模式,但什么也没发生
有人可以提供正则表达式示例来验证此字符串:
127.0.0.1-127.0.0.125
您可以在这里使用两件事:使用否定字符类来匹配,
or -
,并使用子例程调用来确保您的模式保持合理的大小并且字符串不能以,
or -
:
^((?:(?: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]?))(?:[,-](?1)){0,49}$
See the 正则表达式演示 https://regex101.com/r/1dg92i/1
Details:
-
^
- 字符串的开头
-
((?:(?: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]?))
- 第 1 组捕获 1 个 IP 地址
-
(?:[,-](?1)){0,49}
- 0 to 49 (as the subpattern above already matched 1 IP, it will sum up to 50 all in all) sequences of:
-
[,-]
- 匹配任一字符类,
or -
-
(?1)
- “重复”第 1 组子模式的子例程调用(与匹配相同子模式的反向引用不同)value使用捕获组捕获)
-
$
- 字符串结尾
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)