书法识别工具代码分享

图标

豆瓜

豆瓜网

豆瓜网专栏

豆瓜 图标 2021-02-23 01:22:18

IP地址检测工具


/*
       名字:input.js
       功能:input类型通用JS
       包括:



       --------------------------------------------------------------------------------------------
                    1--IP相关检测及转换函数
                    
                        1>-isIP                检测IP是否合法                        2>-isMask                    检测掩码是否合法                        
                        3>-IPatol            IP字符串转为long                    4>-isIPMaskMatch    IP与掩码是否匹配



                        5>-isNet            是否是子网地址                        6>-isNetMaskMatch 子网与掩码是否匹配



                        7>-isIPConflict检测两IP/掩码网段冲突        8>-isNetConflict     检测两子网网段是否冲突
                        8>-isIPRangeVal检测IP范围是有效                    10>isIPRangeConflict检测两IP范围是否互相包含
                        
                    2--端口相关检测及转换函数
                        1>-isPort                    检测端口是否合法            2>-isPortRangeConflict    检测两端口范围是否冲突
                        3>-isPortRangeVal    检测端口范围是否有效



                        
                    3--字符串相关



                        1>-strlen                 字符串长度(返回字符串所占字节数)
            ---------------------------------------------------------------------------------------------------*//*******************************************************************
**IP相关
********************************************************************///将字符串形式的IP转换成longfunction IPatol(strIP)
{    var ip=0;    var array=strIP.split(".");    if(array.length == 4)
    {
        ip=parseInt(ip)+parseInt(array[0])*16777216;
        ip=parseInt(ip)+parseInt(array[1])*65536;
        ip=parseInt(ip)+parseInt(array[2])*256;
        ip=parseInt(ip)+parseInt(array[3]);
    }    return parseInt(ip);    
}//IP是否合法,无提示,0.0.0.0被认为是不合法IP,如果IP可为0.0.0.0需在外部另加判断function IPntoa(dwIP)
{    var part1 = (dwIP>>24) & 0x000000FF;    var part2 = (dwIP>>16) & 0x000000FF;    var part3 = (dwIP>>8) & 0x000000FF;    var part4 = (dwIP & 0x000000FF);    
    return (part1.toString() + "." + part2.toString() + "." + part3.toString() + "." + part4.toString());
}function isIP(strIP)     
{    var re=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/; //IP正则  
  if(re.test( strIP ))    
  { 
      var n1 = parseInt(RegExp.$1);      var n2 = parseInt(RegExp.$2);      var n3 = parseInt(RegExp.$3);      var n4 = parseInt(RegExp.$4);    
      var array = strIP.split(".");    if ((array[0].charAt(0) == '0' && n1 != 0)        || (array[1].charAt(0) == '0' && n2 != 0)          || (array[2].charAt(0) == '0' && n3 != 0)        || (array[3].charAt(0) == '0' && n4 != 0))        return false;  
      //首位必需为1-223之间除127之外的任一数字,末位不能为0或255
      if((n1>0 && n1<224 && n1!=127) && (n2>=0 && n2<=255) && (n3>=0 && n3<=255) && ( n4>0 && n4<255))
      {          return true;    
      }
  }  return false;     
} 

//IP是否合法,无提示,0.0.0.0被认为是不合法IP,如果IP可为0.0.0.0需在外部另加判断function isIP2(strIP)     
{    var re=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/; //IP正则    
  if(re.test( strIP ))    
  { 
      var n1 = parseInt(RegExp.$1);      var n2 = parseInt(RegExp.$2);      var n3 = parseInt(RegExp.$3);      var n4 = parseInt(RegExp.$4);    
      var array = strIP.split(".");    if ((array[0].charAt(0) == '0' && n1 != 0)        || (array[1].charAt(0) == '0' && n2 != 0)          || (array[2].charAt(0) == '0' && n3 != 0)        || (array[3].charAt(0) == '0' && n4 != 0))        return false;  
      //首位必需为1-223之间除127之外的任一数字,末位不能为0或255
      if((n1>=0 && n1<=255) && (n2>=0 && n2<=255) && (n3>=0 && n3<=255) && (n4>=0 && n4<=255))
      {          return true;    
      }
  }  return false;     
} 

//IP验证,有提示 function isIP_t(strIP)
{    if(strIP == "")
    {
        alert("请输入IP!");        this.focus();        return false;    
    }    if(!isIP(strIP))
    {
         alert("IP无效!\n\n(只能包含0-255之间的整数,\n\n且首位必须是1-223之间除127以外的数字,\n\n末位不能为0或255)");         this.focus();         return false;
    }    return true;    
}//掩码是否合法,无提示function isMask(strMask)
{    //var reg=/^(\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])){3}$/; //IP正则 
    var reg=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;//IP正则
    if(reg.test(strMask))   
  { 
      var n1 = parseInt(RegExp.$1);      var n2 = parseInt(RegExp.$2);      var n3 = parseInt(RegExp.$3);      var n4 = parseInt(RegExp.$4);      if(isNaN(n1) || isNaN(n2) || isNaN(n3) || isNaN(n4))
      {          return false;
      }      if( (n1>255 || n1<0)|| (n2>255 || n2<0) || (n3>255 || n3<0) || (n4>255 || n4<0))
      {          return false;    
      }      var tmp = (n1*Math.pow(2,24))+(n2*Math.pow(2,16))+(n3*Math.pow(2,8))+n4;        if(tmp < Math.pow(2,31))
        {            return false;
        }        else
        {
            tmp -=  Math.pow(2,31);            //后续位必须为连续的1
            for (i = 30; i > 1; i --)
            {                if (tmp == 0)
                {                    break;
                }                else if(tmp < Math.pow(2,i))
                {                    return false;
                }                else
                {
                    tmp -= Math.pow(2,i);
                }
            }
        }
  }  else//!reg.match( strMask)  {      return false;    
  }    return true;
}//掩码是否合法,0.0.0.0是合法的function isMask2(strMask)
{    if(!isMask(strMask))
    {        if(strMask == "0.0.0.0")
        {            return true;
        }        else
            return false;
    }    else
        return true;
}//子网掩码验证,有提示function isMask_t(strMask)
{    if(strMask == "")
    {
        alert("请输入掩码!");    
        return false;
    }    if(!isMask(strMask))
    {
        alert("请输入有效的子网掩码!");        return false;    
    }    return true;
}//IP与掩码匹配验证,在执行此函数前,需已对IP及掩码的有效性做过检验function isIPMaskMatch(strIP, strMask)
{    var nIP = IPatol(strIP);    var nMask = IPatol(strMask);    if (((nIP|nMask)== -1) || (((nIP|nMask)+Math.pow(2,32)) == nMask))
    {        return false;
    }    
    return true;
}//验证是否是合法的子网地址,0.0.0.0认为是不合法function isNet(strNet)
{    var re=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/; //IP正则    
  if(re.test( strNet ))    
  { 
      var n1 = parseInt(RegExp.$1);      var n2 = parseInt(RegExp.$2);      var n3 = parseInt(RegExp.$3);      var n4 = parseInt(RegExp.$4);    
      //首位为1-223之间除127以外的数字



      if( (n1>0 && n1<224 && n1!=127)&& (n2>=0 && n2<=255) && (n3>=0 && n3<=255) && (n4>=0 && n4<=255))
      {          return true;    
      }
  }  
    return false;
}//验证是否是合法的子网地址,0.0.0.0认为是合法function isNet2(strNet)
{    var re=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/; //IP正则    
  if(re.test( strNet ))    
  { 
      var n1 = parseInt(RegExp.$1);      var n2 = parseInt(RegExp.$2);      var n3 = parseInt(RegExp.$3);      var n4 = parseInt(RegExp.$4);    
      //首位为1-223之间除127以外的数字



      if( (n1>=0 && n1<224 && n1!=127)&& (n2>=0 && n2<=255) && (n3>=0 && n3<=255) && (n4>=0 && n4<=255))
      {          return true;    
      }
  }  
    return false;
}//验证子网与掩码的匹配,在执行此函数之前,需对子网及掩码的有效性做验证function isNetMaskMatch(strNet,strMask)
{    var tmpArray=strNet.split(".");    var tmpArray2 = strMask.split(".");    
    if(tmpArray.length != 4 || tmpArray2.length != 4)
    {        return false;    
    }    
    for (i = 0; i < 4; i++)
    {
        tmpArray[i] = parseInt(tmpArray[i]);
        tmpArray2[i] = parseInt(tmpArray2[i]);        
        if ((tmpArray[i]|tmpArray2[i])!=tmpArray2[i])
        {            return false;
        }
    }    
    return true;    
}//验证两IP/掩码 网段是否冲突,在调用该函数前,需已检测传入参数的有效性//true -- 冲突,false -- 未冲突function isIPConflict( strIP1,strMask1, strIP2, strMask2)
{    var ip1 = IPatol(strIP1);    var mask1 = IPatol(strMask1);    var ip2 = IPatol(strIP2);    var mask2 = IPatol(strMask2);    if(ip1 == 0 || mask1 == 0 || ip2 == 0 || mask2 == 0)
    {        return false;    
    }    
    if( (ip1&mask1&mask2) == (ip2&mask2&mask1))
    {        return true;    //网段冲突    }    
    return false;
}//验证两子网网段是否冲突(具有包含关系),在调用该函数前,需已检测传入参数的有效性//true -- 冲突,false -- 未冲突function isNetConflict( strNet1,strMask1,strNet2,strMask2)
{    var net1 = IPatol(strNet1);    var mask1 = IPatol(strMask1);    var net2 = IPatol(strNet2);    var mask2 = IPatol(strMask2);    if(net1 == 0 || mask1 == 0 || net2 == 0 || mask2 == 0)
    {        return false;    
    }    //冲突
    if( (net1&mask2) == (net2&mask1))
    {        return true;    
    }    
    return false;
}//验证IP范围是否有效(起始IP不能大于结束IP)function isIPRangeVal(strIPFrom,strIPTo)
{    var ip1 = IPatol(strIPFrom);    var ip2 = IPatol(strIPTo);    
    if(ip1>ip2)
    {        return false;    //起始IP大于结束IP    }    
    return true;    
}//验证IP范围冲突(即是否具有包含关系),传入参数的有效性在调用该函数前已验证function isIPRangeConflict(IPFrom1,IPTo1,IPFrom2,IPTo2)
{    var ipf1 = IPatol(IPFrom1);    var ipt1 = IPatol(IPTo1);    var ipf2 = IPatol(IPFrom2);    var ipt2 = IPatol(IPTo2);    
    if(!((ipf1>ipt2) || (ipt1<ipf2)))
    {        return true;    //IP范围具有包含关系    }    
    return false;
}/********************************************************************
**端口相关
*********************************************************************///是否是有效的端口function isPort(strPort)
{    var nport = parseInt(strPort); 
    if(isNaN(nport)||nport<1 ||nport>65535)
    {        return false; //不是1-65535之间的数    } 

    return true;    
}//是否是有效的端口范围function isPortRangeVal(strPort1,strPort2)
{    var nport1 = parseInt(strPort1);    var nport2 = parseInt(strPort2);    if(isNaN(nport1) || isNaN(nport2))
    {        return false;    
    }    
    if(nport1>nport2)
    {        return false;    //起始端口大于结束端口    }    return true;
}//端口范围是否冲突function isPortRangeConflict(PortF1,PortT1,PortF2,PortT2)
{    var nf1 = parseInt(PortF1);    var nt1 = parseInt(PortT1);    var nf2 = parseInt(PortF2);    var nt2 = parseInt(PortT2);    if(isNaN(nf1) || isNaN(nt1) || isNaN(nf2) || isNaN(nt2))
    {        return false;    
    }    
    if( !( (nf1>nt2) || (nT1<nf2) ))
    {        return false;//端口范围冲突        }    return true;
}/********************************************************************
**字符串相关



*********************************************************************///取得字符串的字节数(一个汉字占三个字节)function strlen(str)
{    var cnt = 0;    for( i=0; i<str.length; i++)
    {        var value = str.charCodeAt(i);        if( value < 0x080)
        {
            cnt += 1;
        }        else if( value < 0x0800)
        {
            cnt += 2;
        }        else 
        {
            cnt += 3;
        }
    }    return cnt;
}function isInputVilid(tmp)
{//    var tmp = obj.value;
    if(tmp.indexOf('"')!=-1 || tmp.indexOf("<")!=-1 || tmp.indexOf(">")!=-1 
            || tmp.indexOf("'")!=-1 || tmp.indexOf("&")!=-1 
            || tmp.indexOf("%")!=-1 || tmp.indexOf("#")!=-1 || tmp.indexOf("=")!=-1 
            || tmp.indexOf("\\")!=-1 || tmp.indexOf(":")!=-1 || tmp.indexOf(",")!=-1)
    {        return false;
    }    return true;
}function encryptPasswd(str)
{    //dlan4.6 只支持https登录, 不在需要控件加密
    //var pwdStr =  escape(str);
    //return active.EncryptUTF8(pwdStr);
    //return active.Encrypt(str);
    return str;
}//验证IP范围是否有效(起始IP不能大于结束IP)function isIPinRange(strIP, strIPFrom,strIPTo)
{    var ip = IPatol(strIP);    var ip1 = IPatol(strIPFrom);    var ip2 = IPatol(strIPTo);    
    if(ip1>ip2)
    {        return false;    //起始IP大于结束IP    }    
    if (ip < ip1 || ip > ip2)
    {        return false;
    }    
    return true;    
}/********************************************************************
**webagent相关
*********************************************************************///判断strIpPort是否是ip:port的形式。比如1.2.3.4#1.2.3.5:4009function isIpPort(strIpPort)
{    if (strIpPort == null || strIpPort.length == 0)
    {        return false;
    }    var rex = /^([0-9.]+#){0,3}[0-9.]+:\d+$/;//判断是否是ip1#ip2#ip3:port
    if ( ! rex.test(strIpPort) )
    {        return false;
    }    var arr = strIpPort.split(/:|#/);    if ( ! isPort(arr[arr.length-1]) )
    {        return false;
    }    for (i = 0 ;i < arr.length-1 ; i++)
    {        if ( ! isIP(arr[i]) )
        {            return false;
        }
    }    return true;
}//判断strDomainPort是否是 动态域名:端口 的形式function isDomainPort(strDomainPort)
{    if (strDomainPort == null || strDomainPort.length == 0)
    {        return false;
    }
    rex=/^([\w-]+\.)+[a-zA-Z]+:(\d){1,5}$/    if ( ! rex.test(strDomainPort))
    {        return false;
    }    var arr = strDomainPort.split(":");    if ( ! isPort(arr[1]) )
    {        return false;
    }    return true;
}//判断strUrl是否是url形式function isUrl(strUrl)
{    if (strUrl == null || strUrl.length == 0)
    {        return false;
    }
    rex=/^([\w-]+\.)+[\w]+(:(\d){1,5})?(\/[\w- .?%&=]*)+(\/)?$/
    strUrl = encodeURI(strUrl); //以防路径名有中文
    if (rex.test(strUrl))
    {        return true;
    }    return false;
}/*从strWebagt获取正确的webagent地址
 首先自动转换句号冒号到英文,
 然后判断webagent是否为下面的格式,
   1> 固定IP:端口(其中固定IP支持多IP,最多支持四个IP,各IP之间以#号分隔,如:202.96.137.75#60.28.239.21:4009); 
   2> 动态域名:端口(如:www.sangfor.com.cn:4009); 
   3> 动态网页(如:www.sangfor.com/NG4.0/test.php).
 如果不是返回null,如果是则返回转换得到的地址*/function getRightWebagent(strWebagt)
{    if (strWebagt == null || strWebagt.length == 0)
    {        return null;
    }
    
    strWebagt = strWebagt.replace(/^http(:|:)\/\//,""); //如果http://头 则去掉
    
    // 将"/"以前的句号冒号全部替换成英文的
    var arr = strWebagt.split("/");
    arr[0] = arr[0].replace(/:/g,":");
    arr[0] = arr[0].replace(/。/g,".");
    strWebagt = arr.join("/");    
    if ( isIpPort(strWebagt) )
    {        return strWebagt;
    }    
    if ( isDomainPort(strWebagt) )
    {        return strWebagt;
    }    
    if ( isUrl(strWebagt) )
    {        return strWebagt;
    }    return null;
}


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

书法识别
图标 图标

豆瓜

豆瓜网

豆瓜网专栏

全部评论

豆瓜

豆瓜网

豆瓜网专栏

  • 加盟艾思德妮羽绒服品牌要多少钱
  • 最好用的国货护肤品有哪些
  • 投资服装加盟店可以赚钱吗
  • 加盟东北红高粱酒要多少钱以及优势是什么
  • 浅谈如何加盟快递代理点
  • 我来说两句