关键词搜索

源码搜索 ×
×

javascript判断IPV6格式

发布2021-05-26浏览920次

详情内容

随着ipv6的普及,在web上添加ip6地址的要求逐渐增多,下面这个函数是我按照ipv6的定义写的判断,可以用来判断正常的,缩写的ipv6格式,同时可以判断ipv6和ipv4混合的格式:

//统计 10F: 或者:10B的个数  
 
function cLength(str){   
 
  var reg = /([0-9a-f]{1,4}:)|(:[0-9a-f]{1,4})/gi;   
 
  var temp = str.replace(reg,' ');   
 
  return temp.length;   
 
 }   
 
/*  
 
 * 判断ipv6格式  
 * @author gblfy
 * 
 * @version 2021-05-26  
 * */       
function isIPv6(tmpstr)  {  
        //CDCD:910A:2222:5498:8475:1111:3900:2020   
        var patrn=/^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/i;   
        var r=patrn.exec(tmpstr)  
        if(r)  {  
            return true;  
        }  
        if(tmpstr=="::"){  
            return true;  
        }  

        //F:F:F::1:1 F:F:F:F:F::1 F::F:F:F:F:1格式  
        patrn=/^(([0-9a-f]{1,4}:){0,6})((:[0-9a-f]{1,4}){0,6})$/i;   
        r=patrn.exec(tmpstr);  
        if(r)  {      
            var c=cLength(tmpstr);  
            if(c<=7 && c>0) {  
                return true;  
            }   
        }                  
 
        //F:F:10F::  
        patrn=/^([0-9a-f]{1,4}:){1,7}:$/i;   
        r=patrn.exec(tmpstr);  
        if(r)   {  
            return true;  
        }   
        
        //::F:F:10F   
        patrn=/^:(:[0-9a-f]{1,4}){1,7}$/i;   
        r=patrn.exec(tmpstr);  
        if(r)  {  
            return true;  
        }  

        //F:0:0:0:0:0:10.0.0.1格式   
        patrn=/^([0-9a-f]{1,4}:){6}(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
        r=patrn.exec(tmpstr);  
        if(r)  {  
            if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )  
            return true;  
        }  
        
        //F::10.0.0.1格式  
        patrn=/^([0-9a-f]{1,4}:){1,5}:(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
        r=patrn.exec(tmpstr);  
        if(r)   {  
            if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )  
                return true;  
        }  

        //::10.0.0.1格式  
        patrn=/^::(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
        r=patrn.exec(tmpstr);  
        if(r) {  
            if(r[1]<=255 && r[2]<=255 &&r[3]<=255 && r[4]<=255)  
                return true;  
        }  
        return false;  
}  

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载