如何调整正则表达式以验证可用范围的IP地址
调整IP正则以限制首段≤223、末段≤254
你的问题出在只修改了第一部分的25[0-5],但原正则里的2[0-4][0-9]仍会匹配224-249的数值(比如224符合2[0-4][0-9]规则:第一位2,第二位2属于0-4范围,第三位4属于0-9范围),所以必须重构第一个八位组的匹配逻辑,同时修改第四个八位组的上限。
调整后的完整正则:
/\b(22[0-3]|2[01][0-9]|1[0-9]{2}|[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-4]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/
关键修改说明:
第一个八位组(首段):
- 拆分原有的
2[0-4][0-9],替换为22[0-3]|2[01][0-9],明确限制范围:22[0-3]:匹配220-2232[01][0-9]:匹配200-219- 保留
1[0-9]{2}:匹配100-199 - 保留
[01]?[0-9][0-9]?:匹配0-99(含0开头的格式如012)
这样就彻底排除了224及以上的首段数值。
- 拆分原有的
第四个八位组(末段):
- 将原有的
25[0-5]改为25[0-4],直接限制末段最大值为254,排除255。
- 将原有的
验证示例:
- 匹配通过:
192.168.1.1、223.255.255.254、0.0.0.0 - 匹配失败:
224.0.0.1(组播地址)、255.255.255.255(广播地址)、240.1.1.1(保留地址)
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

