javascript实现验证IP地址等相关信息代码


Posted in Javascript onMay 10, 2015

本代码是从个人项目中提取出来的,应该可以算的上是相当全面有效的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.235 --> 10101100000100000000010011101011 */
var praseIpToBinary = function(ipAddress){
  var numArray = ipAddress.split(".");
  if(numArray.length != 4){
    alert("输入的IP有误");
    return;
  }
  var returnIpStr = "";
  for (var i = 0; i < 4; i++) {
    var curr_num = numArray[i];
    var number_Bin = parseInt(curr_num);
    number_Bin = number_Bin.toString(2);
    var iCount = 8-number_Bin.length;
    for (var j = 0; j < iCount; j++) {
      number_Bin = "0"+number_Bin;
    }
    returnIpStr += number_Bin;
  }
  return returnIpStr;
}
/* 判断子网掩码是否合法 */
/* 子网掩码必须是 1 和 0组成的连续的一段 如 11110000 */
var judgeSubnetMask = function(ipAddress){
  var binaryIpString = praseIpToBinary(ipAddress).toString();
  var subIndex = binaryIpString.lastIndexOf("1")+1;
  var frontHalf = binaryIpString.substring(0,subIndex);
  var backHalf = binaryIpString.substring(subIndex);
  if(frontHalf.indexOf("0") != -1 || backHalf.indexOf("1") != -1){
    return false;
  }else{
    return true;
  }
}
/* 两个IP地址做 与 操作 返回结果 */
/* 该功能主要用来实现 IP地址和子网掩码 相与,获取当前IP地址的IP地址段 */
/* 以此来验证输入的网关地址是否合法 */
var getIPsAndResult = function(ipAddr1,ipAddr2){
  var ipArray1 = ipAddr1.split(".");
  var ipArray2 = ipAddr2.split(".");
  var returnResult = "";
  if(ipArray1.length != 4 || ipArray2.length != 4 ){
    alert("输入的IP有误");
    return;
  }
  for (var i = 0; i < 4; i++) {
    var number1 = parseInt(ipArray1[i]);
    var number2 = parseInt(ipArray2[i]);
    returnResult += number1&number2;
    if(i<3){
      returnResult += ".";
    }
  }
  return returnResult;
}
/* 判断网关地址是否合法 */
var judgeGatewayResult = function(ipAddr,subnetMask,gateway){
  var andResult1 = getIPsAndResult(ipAddr,subnetMask);
  var andResult2 = getIPsAndResult(gateway,subnetMask);
  if(andResult1 == andResult2){
    return true;
  }else{
    return false;
  }
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
(仅IE下有效)关于checkbox 三态
May 12 Javascript
javascript学习笔记(五) Array 数组类型介绍
Jun 19 Javascript
关于编写性能高效的javascript事件的技术
Nov 28 Javascript
jquery中ready()函数执行的时机和window的load事件比较
Jun 22 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
vue组件三大核心概念图文详解
May 30 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 Javascript
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
招聘网站基于jQuery实现自动刷新简历
May 10 #Javascript
javascript实现获取字符串hash值
May 10 #Javascript
Javascript实现计算个人所得税
May 10 #Javascript
AngularJS基础知识笔记之表格
May 10 #Javascript
AngularJS基础知识笔记之过滤器
May 10 #Javascript
浅谈下拉菜单中的Option对象
May 10 #Javascript
AngularJS基础学习笔记之控制器
May 10 #Javascript
You might like
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
json跟xml的对比分析
2008/06/10 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
python实现下载整个ftp目录的方法
2017/01/17 Python
python实现折半查找和归并排序算法
2017/04/14 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
Python实现仿射密码的思路详解
2020/04/23 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
安全环保标语
2014/06/09 职场文书
圣诞晚会主持词
2015/07/01 职场文书
比较几种Redis集群方案
2021/06/21 Redis
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android