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}|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;
    }

时间: 2024-10-12 21:23:12

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

JS中IP地址的相关验证

/* ***************** */ /* 判断IP地址是否合法 */ var judgeIpIsLegal = function(ipAddr){ var regIps = /^(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|[0-9])\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|[0-9]))$/; return regIps.test(ipAddr); } /* IP地址转换为二进制字符串 */ /* 例如:172.16.4

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

临时修改IP地址.网关.主机名.DNS,马上生效,无需重启(重启后失效) 1.修改主机名 #hostname Slyar 2.修改IP地址(eth0为网卡名称) #ifconfig eth0 192.168.1.5 netmask 255.255.255.0 3.修改默认网关(eth0为网卡名称) #route add default gw 192.168.1.1 dev eth0 4.修改DNS #vim /etc/resolv.conf CentOS(RedHat)命令行永久修改IP地址.网

Debian 里设置 IP 地址、网关、DNS

1.设置IP地址.网关 cp /etc/network/interfaces /etc/network/interfaces.bak  # 备份原有配置文件 vi /etc/network/interfaces   # 编辑网网卡配置文件 # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0                       #

Linux配置网络IP地址、网关和DNS

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. Linux命令行永久修改IP地址.网关和DNS. 1.修改IP地址 首先检查一下你的主机网卡数量及名称,相关信息在 /etc/sysconfig/network-scripts/ 下. 从图中可以看到我有2块网卡,第一块为以太网物理网卡,编号为0,如果你有多个网卡,则编号为0.1.2.3...:第二块网卡为回环网卡,一般不需要设置. 使用vim编辑你需要设置IP的网卡,这里我只能修改if

RHEL7.0 系列-设置IP地址、网关和DNS

1.1. 设置IP地址.网关和DNS RHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式. en 代表的是enthernet (以太网),o 代表的是onboard (内置),那一串数字是主板的某种索引编号自动生成,以便保证其唯一性.和原先的命名方式对比,这种新的方式比较长,难以记忆,不过优点在于编号唯一,做系统迁移的时候不容易出错. 说明:RHEL 7.0默认安装好之后是没有自动开启网络连接的! 方法1.进入网络置配文件目录,修改网卡配置文件,如下图所示: TYP

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

CentOS 网络设置修改 指定IP地址 DNS 网关(实测 笔记) 环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 路由器网关:192.168.1.1 步骤: 1.查看网络MAC地址 [[email protected] ~]# cat /etc/udev/rules.d/70-persistent-net.rules 显示如下信息 # PCI device 0x15ad:0x07b0 (vmxnet3) SUBSY

RHEL7.x版本,设置IP地址、网关和DNS的3种方法

RHEL7.x版本中,网卡的命名方式从eth0,1,2变成了enoxxxx的格式.其中en代表enthernet(以太网卡),o代表的是onboard(内置),那一串数字是由主板的索引编号自动生成.和原先的命名方式相比,缺点是太长.难于记忆,优点是编号唯一,系统迁移时不容易出错.那如何设置ip地址.网关和dns呢?下面将介绍常用的三种方法.方法1:修改网卡配置文件 [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-en

C#判断ip地址是否ping的通

Ping pingSender = new Ping(); PingReply reply = pingSender.Send("127.0.0.1",120);//第一个参数为ip地址,第二个参数为ping的时间 if(reply.Status == IPStatus.Success) { //ping的通 } else { //ping不通 } C#判断ip地址是否ping的通,布布扣,bubuko.com

Linux 修改 IP地址 和 网关

修改IP地址和网关是很常见的操作,在做相关实验的时候,如果没有设置好,会带来很多不必要的麻烦.. 1. 修改IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=noneBROADCAST=192.168.1.255IPADDR=192.168.1.33NETMASK=255.255.255.0NETWORK=192.168.1.0ONBOOT=yesUSERCTL=noPEERDNS=noTYPE=Ethern