目前我们有正则表达式
'/^(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]?)$/'
它匹配正确的IP地址,但我们的要求是匹配以下格式
- 123.23.10.x.
- 123.23.x.x.
- 123.x.x.x
所以它必须只接受IP中的数字或"x"
提前感谢您的帮助
我想
我跑题了,但你可以避免正则表达式,我相信它不太容易 出错:
var ips = [
"0.0.0.0",
"0.0.255.0",
"123.x.x.x",
"123.y.x.x",
"0.0.256.0",
"0.0.-1.0"
];
for (let i = 0; i < ips.length; i++) {
console.log(validateIp(ips[i]) ? "pass" : "fail", ips[i]);
}
function validateIp (ip) {
var strings = ip.split(".");
if (strings.length != 4) return false;
for (let i = 0; i < strings.length; i++) {
let octet = parseInt(strings[i], 10);
if (isNaN(octet) && strings[i] !== "x") {
return false;
} else if (octet < 0 || octet > 255) {
return false;
}
}
return true;
}
通过在可选类中添加|x
,您可以添加匹配 x
s 的可能性:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|x).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|x).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|x).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|x)$
请参阅此演示。