javascript使用正则表达式验证检测输入的ip地址是否合法

使用正则表达式验证检测输入的ip地址是否合法:

首先看看啥是IP地址

Ip地址实际上是32位二进制数,为了便于记忆就分为四段,每段八位,中间用小数点隔开。每段八位的二进制数转成十进制,大小为0至255。

上面是搜索引擎搜出来的IP解释;

下面是验证的正则代码;

function isIP(ip) {
var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
if (reSpaceCheck.test(ip)) {
ip.match(reSpaceCheck);
if (RegExp.$1<=255&&RegExp.$1>=0
&&RegExp.$2<=255&&RegExp.$2>=0
&&RegExp.$3<=255&&RegExp.$3>=0
&&RegExp.$4<=255&&RegExp.$4>=0)
{
return true;
}else
{
return false;
}
}else {
return false;
}
}
function isIP2(ip) {
var re = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
return re.test(ip);
}
console.log(isIP("192.168.0.1"));//true
console.log(isIP("192.1682.0.1"));//false
console.log(isIP("255.255.255.255"));//true
console.log(isIP2("255.255.255.255"));//true
console.log(isIP2("255.1682.255.255"));//false


推荐isIP2的方式;

下面的这种正则,写的有点啰嗦

function checkip(strIP) {
var re = /^(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)\.(\d{1,3}|\*)$/g;//模糊匹配IP地址的正则表达式
if(re.test(strIP)){
if(RegExp.$1 == '*' && RegExp.$2 == '*' && RegExp.$3 == '*' && RegExp.$4 == '*'){
return true;
}
if(RegExp.$1 < 256 && RegExp.$2 == '*' && RegExp.$3 == '*' && RegExp.$4 == '*'){
return true;
}
if(RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 == '*' && RegExp.$4 == '*'){
return true;
}
if(RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 == '*'){
return true;
}
if(RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256){
return true;
}
}
return false;
}
console.log(checkip("192.168.0.1"));//true
console.log(checkip("192.1682.0.1"));//false
console.log(checkip("255.255.255.255"));//true

下面是列表IP进行批量的校验,可以看看代码的思路

var isIp = function (){
var regexp = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
return function(value){
var valid = regexp.test(value);
if(!valid){//首先必须是 xxx.xxx.xxx.xxx 类型的数字,如果不是,返回false
return false;
}
return value.split('.').every(function(num){
//切割开来,每个都做对比,可以为0,可以小于等于255,但是不可以0开头的俩位数
//只要有一个不符合就返回false
if(num.length > 1 && num.charAt(0) === '0'){
//大于1位的,开头都不可以是‘0’
return false;
}else if(parseInt(num , 10) > 255){
//大于255的不能通过
return false;
}
return true;
});
}
}();
var test_ip = '123.12.123.1';//一个普通的ip
console.log(isIp(test_ip));//返回true
var test_ips = '123.1.1.1,127.0.0.1,192.168.1.1';//多个IP,用逗号(,)隔开
var isTrue = test_ips.split(',').every(function(ip){
return isIp(ip);//先将字符串按照逗号分成数组,在校验就可以了
});
console.log(isTrue);//返回true,上面的ip全部正确

js里面用正则获取字符串中的Ip地址

~

未经允许不得转载:WEB前端开发 » javascript使用正则表达式验证检测输入的ip地址是否合法

赞 (0)