如何在JavaScript中验证IP的开头

时间:2018-08-16 18:35:22

标签: javascript regex

我正在尝试验证以20.4.xxx.xxx开头的IP,并编写不起作用的正则表达式。有关如何操作的任何想法。我真的对正则表达式很陌生。

 if (ip =~" /([10]|[5]\d|1?\d\d?)/g")

3 个答案:

答案 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
}