用于检查 IP 地址的 javascript 正则表达式

新手上路,请多包涵

我有几个 IP 地址,例如:

  1. 115.42.150.37
  2. 115.42.150.38
  3. 115.42.150.50

如果我想搜索所有 3 个 ip 地址,我应该写什么类型的正则表达式?例如,如果我这样做 115.42.150.* (我将能够搜索所有 3 个 IP 地址)

我现在能做的是: /[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}/ 但它似乎不能正常工作。

谢谢。

原文由 KennC. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 598
3 个回答

你得到的正则表达式已经有几个问题:

首先,它包含点。在正则表达式中,点表示“匹配任何字符”,您只需要匹配一个实际的点。为此,您需要对其进行转义,因此在点的前面放一个反斜杠。

其次,但是您要匹配每个部分中的任意三位数字。这意味着您将匹配 0 到 999 之间的任何数字,这显然包含很多无效的 IP 地址数字。

这可以通过使数字匹配更复杂来解决;这个网站上还有其他答案解释了如何做到这一点,但坦率地说,这不值得付出努力——在我看来,最好将字符串按点拆分,然后将四个块验证为数字整数范围——即:

 if(block >= 0 && block <= 255) {....}

希望有所帮助。

原文由 Spudley 发布,翻译遵循 CC BY-SA 4.0 许可协议

可能会迟到但是,有人可以尝试:

有效 IP 地址示例

115.42.150.37
192.168.0.1
110.234.52.124

无效 IP 地址示例

210.110 – must have 4 octets
255 – must have 4 octets
y.y.y.y – only digits are allowed
255.0.0.y – only digits are allowed
666.10.10.20 – octet number must be between [0-255]
4444.11.11.11 – octet number must be between [0-255]
33.3333.33.3 – octet number must be between [0-255]

用于验证 IP 地址的 JavaScript 代码

function ValidateIPaddress(ipaddress) {
  if (/^(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-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress)) {
    return (true)
  }
  alert("You have entered an invalid IP address!")
  return (false)
}

原文由 ErickBest 发布,翻译遵循 CC BY-SA 3.0 许可协议

/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.|$)){4}$/

考虑到最短的话,能写成这样。

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏