因为要做静态地址配置的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}|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])$/; 
    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;
    }

js判断ip地址,子网掩码,网关的逻辑性检查的更多相关文章

  1. [转]IP地址-子网掩码-默认网关

    IP地址:是给每个连接在Internet上的主机分配的一个32bit地址.地址有两部分组成,一部分为网络地址,另一部分为主机地址.IP地址分为A.B.C.D.E 5类.常用的是B和C两类.网络地址的位 ...

  2. IP地址 子网掩码 默认网关 DNS(转)

    突然被问到IP地址方面的知识,吓得我赶紧上网找一找资料,觉得这篇还是写得简单易懂,share一下. Key: 1.IP地址=网络地址+主机地址,(又称:主机号和网络号组成): 2.将IP地址和子网掩码 ...

  3. IP地址,子网掩码,默认网关,路由,形象生动阐述

    自己的Linux虚拟机已经分配了固定的IP地址(使用无线路由,用的是192.168.1.XX网段),公司的无线网络分配的IP地址是(10.51.174.XX网段) 所以当自己的电脑拿到公司,还想使用桥 ...

  4. IP:192.168.21.173 子网掩码:255.255.255.0 网关:192.168.21.2 DNS:8.8.8.8 8.8.4.4 1、设置IP地址、网关 ee /etc/rc.conf #编辑 ifconfig_em0="inet 192.168.21.173 netmask 255

    IP:192.168.21.173子网掩码:255.255.255.0网关:192.168.21.2DNS:8.8.8.88.8.4.41.设置IP地址.网关ee /etc/rc.conf #编辑if ...

  5. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  6. CentOS 网络设置修改 指定IP地址 DNS 网关(转)

    CentOS 网络设置修改 指定IP地址 DNS 网关(实测 笔记)   环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 ...

  7. Linux系统下修改IP地址、网关、DNS的基本方法

    临时修改IP地址.网关.主机名.DNS,马上生效,无需重启(重启后失效) 1.修改主机名 #hostname Slyar 2.修改IP地址(eth0为网卡名称) #ifconfig eth0 192. ...

  8. IP地址/掩码/网关/DNS的设置与工作原理(转)

    现在互联网飞速发展,工作中生活中上不了网的计算机是不可想象的,而电脑系统网络设置中的IP地址.子网掩码.默认网关及DNS服务器,怎么理解,它们是如何工作的,下面做个简单介绍. 通常的上网方式,是打开I ...

  9. IP地址子网掩码主机地址网络号主机号

    (1)子网掩码1所对应的位为网络号位 而所对应的位为主机号位 IP地址+子网掩码=网络号: IP地址+子网掩码(反码)=主机号. (2)主机号中的m位被用来表示网络号了,也就是子网号,将0-255划分 ...

随机推荐

  1. ARM汇编指令的一些总结-转

    ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...

  2. python标准库-日志logging

    1.模块级别 先看一下logging模块的日志级别特点,共分6个等级. 可以手工设置当前日志的默认等级(warn),当日志输出的等级高于默认等级时,日志输出到屏幕,否则不输出. #!/usr/bin/ ...

  3. mac home/end/pageup/pageDown

    home:按fn+左键 end:按fn+右键 pageup:按fn+上键 pagedown:按fn+下键

  4. SQL面试题——查询课程

    题目: 成绩表(Grade),包含字段:GradeID(Int,自增), SNO(int, 学号), CNO(int, 课程号), Score(float,分数) 查询每门课程的平均(最高/最低)分及 ...

  5. openstack controller ha测试环境搭建记录(十)——配置neutron(控制节点)

    创建neutron用户:mysql -u root -p CREATE DATABASE neutron;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@ ...

  6. seajs的常用api简易文档

    目前使用sea.js的公司越来越多, 比如朋友网,阿里巴巴,淘宝网,百姓网,支付宝,有道云笔记等.模块化的javascript开发带来了可维护,可扩展性,尤其在多人协作开发的时候不用再担心文件依赖和函 ...

  7. OPENCV形态学算法-2

    一.漫水填充算法 该算法通过一个指定的种子点,来分析整张图片上的像素,并设置像素差异阈值,在阈值类的点,最后变成相同的颜色.该方法通过上下限和连通方式来达到不同的连通效果. 该方法常用与标记和分离图像 ...

  8. kvm下Windows激活方式小计

    使用kvm创建widnwos镜像模板,镜像模板默认是已经激活的正版系统,但是使用程序拷贝部署到不同的机器后发现已经激活的系统变成未激活状态,我们需求就是需要拷贝到不同的机器也能显示是正版系统 网上找了 ...

  9. HDU1429 bfs

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  10. mongodb 查询时没有索引报错(too much data for sort() with no index)

    报错信息: .... too much data for sort() with no index.... 给对应排序字段加索引就OK 了... 在对应"表"名上,右键--> ...