You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何用单个正则验证带星号通配符的IPv4/IPv6地址

可以用单个正则表达式实现该需求。你现有的正则无法匹配带星号地址的核心原因是未将*加入IP分段的合法取值范围,仅需要在原有正则的分段匹配规则中补充星号的匹配规则即可。

改造规则

  • IPv4部分改造:将原有IPv4分段的匹配规则 ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) 修改为 ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]|\*),允许单个分段为星号。
  • IPv6部分改造:将原有IPv6分段的匹配规则 [0-9A-Fa-f]{1,4} 修改为 ([0-9A-Fa-f]{1,4}|\*),同时删除原有正则中多余的域名匹配逻辑(你的需求无域名校验场景),避免误匹配。

最终可用正则

^\s*(?:(?:(?:[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]|\*)|(?:(?:[0-9A-Fa-f]{1,4}|\*):){7}(?:[0-9A-Fa-f]{1,4}|\*))\s*$

匹配范围说明

该正则可覆盖你提供的所有示例场景:

  • 标准无星号IPv4地址,如10.10.0.1、10.10.255.1
  • 带任意位置星号的IPv4地址,如10.10.*.1、10.10.10.*、10.10.*.*
  • 标准无星号IPv6地址(无::压缩格式),如2001:db8:3333:4444:5555:6666:7777:8888
  • 带任意位置星号的IPv6地址(无::压缩格式),如684D:1111:222:3333:4444:5555:6:*、2001:db8:3333:4444:5555:6666:*:*、684D:1111:222:3333:4444:5555:*:77

如果你需要支持带::压缩格式的IPv6带星地址,只需要在原有IPv6压缩匹配逻辑中同步补充*的匹配规则即可。

内容的提问来源于stack exchange,提问作者Shubham Srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:24:04