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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
9行javascript代码获取QQ群成员具体实现
Oct 16 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
layUI的验证码功能及校验实例
Oct 25 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
May 20 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 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 Stream_*系列函数
2010/08/01 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
js列举css中所有图标的实现代码
2011/07/04 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
Python制作简单的网页爬虫
2015/11/22 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
python里glob模块知识点总结
2021/01/05 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
2019史上最全Database工程师题库
2015/12/06 面试题
非常详细的C#面试题集
2016/07/13 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
县优秀教师事迹材料
2014/01/31 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
公司拓展活动方案
2014/02/13 职场文书
办公室副主任职责范本
2014/03/08 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
内科护士节演讲稿
2014/09/11 职场文书
土地租赁协议书
2015/01/29 职场文书
音乐会主持人开场白
2015/05/28 职场文书
公司车队管理制度
2015/08/04 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
PyTorch device与cuda.device用法
2022/04/03 Python