使用通配符获取有效 IP 的 Javascript 和 Regex

标签 javascript regex

我一直在研究用于验证 IP 地址格式的正则表达式,尽管我有一个适用于完整 IP 地址的正则表达式(所有 4 个八位字节都有值),但我的要求是能够在 IP 上使用通配符例如 65.66.100.* 或 65.66.*

如何更改下面的函数以包含上面两个示例 IP 将通过的条件?

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

最佳答案

您可以使用此 SO answer 中的正则表达式:

var regex = /^((((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]?))|(((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]?)\.){2}\*)|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){1}\*))$/g;

它匹配所有这些方案:

1.2.*
1.2.3.*
1.2.3.4

正则表达式101:https://regex101.com/r/QnfVc4/1

所以你的代码会是这样的:

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

演示:

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

console.log("test for 127.0.0.1 ->", ValidateIPaddress("127.0.0.1"))
console.log("test for 127.0.0.* ->", ValidateIPaddress("127.0.0.*"))
console.log("test for 127.0.* ->", ValidateIPaddress("127.0.*"))
console.log("test for 127.* ->", ValidateIPaddress("127.*"))
console.log("test for 127.0 ->", ValidateIPaddress("127.0"))

关于使用通配符获取有效 IP 的 Javascript 和 Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847148/

相关文章:

javascript - facebook 和 twitter 插件位置

regex - ack:在提供正则表达式时转义单引号

php - 从字符串中删除开头和结尾字符的正则表达式?

javascript - 根据值列表检查变量相等性

javascript - 背景图像大于视口(viewport)

javascript - 如何在 Bootstrap 模式中动态调整字体大小?

javascript - 如何在 Javascript 中求正态分布?

javascript - 正则表达式在页面上查找单词(包括内部标签)

regex - Bash 脚本 sed 命令无法正确处理通过命令行传递的文件

regex - 从查找搜索中排除未知数量的多个目录 (Unix)