zoukankan      html  css  js  c++  java
  • js判断ip地址,子网掩码,网关的逻辑性检查

    因为要做静态地址配置的js校验,找了好多资料发现网上都是关于ip,mask的有效性检查,没有ip,submask,gateway的逻辑性判断,自己写下代码供需要的人参考。

    普及下网关地址知识:

    就是进行与运算1与1得1,1与0为0,0与0为0。首先把ip和子网掩码展开
    10.70.64.223        00001010 .01000110.01000000.11011111
    255.255.255。0   111111111.11111111.11111111.00000000
    网段就是         00001010 .01000110.01000000.00000000
    然后转换成十进制就是:10.70.64.0 
    
    IP地址与子网掩码做与运算和网关地址与子网掩码做与运算得到的结果应该是一致的就对了,也就是主机号一致。
    我这里是先用js将ip,mask,gateway按照‘.’分隔后相与做判断的。
    
    js的按位与运算:
    result = 【整数1】 & 【整数1】
    & 对两个 32 位表达式的每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。
    

    function checkIP(ip) 
    { 
        obj=ip;
        var exp=/^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$/; 
        var reg = obj.match(exp); 
        if(reg==null) 
        { 
            return false;//不合法
        } 
        else 
        { 
            return true; //合法
        } 
    }
     
    function checkMask(mask) 
    { 
        obj=mask; 
        var exp=/^(254|252|248|240|224|192|128|0).0.0.0|255.(254|252|248|240|224|192|128|0).0.0|255.255.(254|252|248|240|224|192|128|0).0|255.255.255.(254|252|248|240|224|192|128|0)$/; 
        var reg = obj.match(exp); 
        if(reg==null) 
        { 
             return false; //"非法"
        } 
         else 
        { 
             return true; //"合法"
        } 
    }    

        var static_ip= document.getElementById('static_ip').value;
            var static_mask= document.getElementById('static_mask').value; 
            var static_gw= document.getElementById('static_gw').value;

            
            if (static_ip=='')
            {
              // $("#static_ip_error").css("display","block");
               document.getElementById('static_ip').focus();
               return false;
            }else if(!checkIP(static_ip))
            {
               //$("#static_ip_error").css("display","none");
               document.getElementById('static_ip').focus();
               return false;              
            }
                
            if(static_mask=='')
            { 
               //$("#static_mask_error").css("display","block");
               document.getElementById('static_mask').focus();
               return false;       
            }else if(!checkMask(static_mask))
            {
                //$("#static_mask_error").css("display","none");  
                document.getElementById('static_mask').focus();
                return false;     
            }        
            
            if(static_gw=='')
            { 
               //$("#static_gw_error").css("display","block");
               document.getElementById('static_gw').focus();
               return false;       
            }else if(!checkIP(static_gw))
            {
                //$("#static_gw_error").css("display","none");
                document.getElementById('static_gw').focus();
                return false;                
            }    
       


        if(static_ip == static_mask || static_mask == static_gw  || static_mask == static_gw)
        {
            alert('地址输入错误!');
            return false; //3个地址不能相同
        }
        
        var static_ip_arr = new Array;
        var static_mask_arr = new Array;
        var static_gw_arr = new Array;
         
        static_ip_arr = static_ip.split(".");
        static_mask_arr = static_mask.split(".");
        static_gw_arr = static_gw.split(".");

        var res0 = parseInt(lan_ip_arr[0]) & parseInt(static_mask_arr[0]);
        var res1 = parseInt(lan_ip_arr[1]) & parseInt(static_mask_arr[1]);
        var res2 = parseInt(lan_ip_arr[2]) & parseInt(static_mask_arr[2]);
        var res3 = parseInt(lan_ip_arr[3]) & parseInt(static_mask_arr[3]);
        
        var res0_gw = parseInt(static_gw_arr[0]) & parseInt(static_mask_arr[0]);
        var res1_gw = parseInt(static_gw_arr[1]) & parseInt(static_mask_arr[1]);
        var res2_gw = parseInt(static_gw_arr[2]) & parseInt(static_mask_arr[2]);
        var res3_gw = parseInt(static_gw_arr[3]) & parseInt(static_mask_arr[3]);
        
        if(res0==res0_gw && res1==res1_gw && res2==res2_gw  && res3==res3_gw)
        {
            
        }else{
            alert('IP地址与子网掩码、网关地址不匹配!');
            return false;
        }

  • 相关阅读:
    Solr4:加入中文分词IKAnalyzer2012 FF
    Solr4:Hello World级别示范
    Solr4:Tomcat7下面配置Solr
    Java:XML篇,使用DOM读取并解析XML
    Solr4:加入中文分词mmseg4j
    Java:XML篇,使用SAX读取并解析XML数据
    SSIS包如何动态指定文件路径
    如何定时执行SSIS包
    用户控件使用事件
    用户控件使用事件与调用页面交互
  • 原文地址:https://www.cnblogs.com/qingsong/p/5031182.html
Copyright © 2011-2022 走看看