javascript正则表达式来检查IP地址

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

我有几个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}/但似乎不能很好地工作。

提问于
用户回答回答于

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

首先,它包含点。在正则表达式中,一个点意味着“匹配任何字符”,在那里你只需要匹配一个实际的点。为此,你需要逃避它,所以在点的前面加一个反斜杠。

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

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

if(block > 0 && block <256) {....}
用户回答回答于

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

VALID 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)  
}  

扫码关注云+社区