js针对ip地址、子网掩码、网关的逻辑性判断


Posted in Javascript onJanuary 06, 2016

因为要做静态地址配置的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。

分享js针对ip地址、子网掩码、网关的逻辑性判断详细代码

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及子网掩码的合法性代码分享:

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; //"合法"
  } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
基于JQuery实现CheckBox全选全不选
Jun 27 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
javascript 用函数实现继承详解
May 28 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
Nov 06 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
js判断当前页面在移动设备还是在PC端中打开
Jan 06 #Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 #Javascript
javascript中闭包(Closure)详解
Jan 06 #Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 #Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
Jan 05 #Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 #Javascript
javascript实现简单的全选和反选功能
Jan 05 #Javascript
You might like
分享php分页的功能模块
2015/06/16 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
python 运算符 供重载参考
2009/06/11 Python
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
python在windows下实现备份程序实例
2014/07/04 Python
Python函数返回值实例分析
2015/06/08 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python实现静态服务器
2019/09/05 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
受资助学生感谢信
2015/01/21 职场文书
大学军训决心书
2015/02/05 职场文书
会计专业求职信范文
2015/03/19 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
python入门学习关于for else的特殊特性讲解
2021/11/20 Python