如何验证IP地址以确保用户在四个部分中输入3位数字?

时间:2018-09-28 13:33:05

标签: javascript

我能够像这样创建脚本来正确验证IP地址,

var ipformat = /^(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]?)$/;

if(g_form.getValue('src_nw_ip_hdcc').match(ipformat)){
    return true;
}else{
    alert("You have entered an invalid Network IP Address!");
    return false;
}

结果非常好,但是在此之前,他们提出了不寻常的要求,要求我验证用户输入的3位数字,并且不允许输入1或2位数字,例如 用户不能输入115.42.150.37,而必须输入115.042.150.037。如何添加验证以确保他们输入3位数字?

4 个答案:

答案 0 :(得分:1)

您的代码中包含[01]?[0-9][0-9]。它说它可以有一个前导0或1,也可以不跟两个数字。简单的解决方法是删除?,使其使0和1为可选

/^(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])$/

答案 1 :(得分:1)

您可以通过删除所有“?”来做到这一点在正则表达式中。 这样,您的正则表达式每次都需要3位数字,并接受192.168.001.001之类的信息

^(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])$

答案 2 :(得分:0)

我认为此正则表达式可以完成这项工作。希望这会有所帮助。

const regex = /^(((25[0-5])|(2[0-4][0-9])|([01][0-9]{2}))\.){3}((25[0-5])|(2[0-4][0-9])|([01][0-9]{2}))$/g;

console.log('Should match');
console.log('255.255.255.255'.match(regex));
console.log('012.000.255.001'.match(regex));
console.log('000.000.000.000'.match(regex));

console.log('Should not match');
console.log('255.255.255.'.match(regex));
console.log('255.255.255.-1'.match(regex));
console.log('.255.255.'.match(regex));
console.log('255.275.255.'.match(regex));
console.log('255.275.255.1'.match(regex));
console.log('25.5.55.1'.match(regex));

答案 3 :(得分:-1)

您可以结合使用split()every()来完成验证工作:

function checkIp(ip) {
  var isCorrect = ip.split('.').every(addr => addr.length === 3);
  if (isCorrect) {
    return 'Ip address is correct';
  }
  return 'Ip address is incorrect';
}
var ip = '115.042.150.037';
console.log(checkIp(ip));

ip = '11.042.150.037';
console.log(checkIp(ip));