我正在尝试验证以20.4.xxx.xxx开头的IP,并编写不起作用的正则表达式。有关如何操作的任何想法。我真的对正则表达式很陌生。
if (ip =~" /([10]|[5]\d|1?\d\d?)/g")
答案 0 :(得分:2)
正则表达式解决方案不是最佳选择:
function test(ip) {
let parts = ip.split('.').map(part => parseInt(part, 10));
if (parts.length !== 4) return false;
if (parts.shift() !== 20) return false;
if (parts.shift() !== 4) return false;
return parts.every(part => part >= 0 && part <= 255);
}
let tests = [
'20.4.0.1',
'20.4.12.255',
'20.04.0.1', // it's true while regexp above has false negative here
'20.4.256.255',
'20.4.0.256',
'120.4.0.1',
'200.4.0.1',
];
console.log(tests.map(test))
您可以通过更有效/可支持的方式手动对其进行测试:
Additional supported encodings
答案 1 :(得分:1)
尝试一下:
if(/^20\.4\./.test(ip)){
<your code if true here>
}
正则表达式为:
^ =字符串的开头 \。=匹配一个点(只有一个点可以匹配任何字符,因此可以将其转义
.test()方法如果匹配则返回true
答案 2 :(得分:1)
分割字符串,并测试前两个数组元素。
const octets = ip.split('.');
if(octets[0] === "20" && octets[1] === "4"){
//success
}