目前我们有正则表达式
'/^(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地址但我们的要求是匹配以下格式
所以它必须只接受一个数字或' x'在ip
感谢您的帮助
答案 0 :(得分:1)
我想我是偏离主题但是你可以避免使用正则表达式,我相信它不容易出错:
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;
}
答案 1 :(得分:0)
通过在可选类中添加|x
,您可以添加匹配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)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|x)$
请参阅this demo。