我一直在寻找用于验证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)
}
答案 0 :(得分:0)
这个正则表达式应该做你想要的:
^(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]?)|\*)|\*)$
要将其分解,我在当前正则表达式的末尾添加了两个|
。最后一个验证最后一个点之后是否存在数字或*
,并且验证最后两个字节是否为当前数字形式,或者只是*
。
您可以在此处验证其行为:https://regex101.com/r/jFq85T/1
答案 1 :(得分:0)
这个应该符合您的需求:
^(?=(?:[^.]*\.){2,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]?)){1,3}(?:\.\*)?$
答案 2 :(得分:0)
您可以使用此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
Regex101: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"))