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 相关文章推荐
js实现图片漂浮效果的方法
Mar 02 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
Feb 21 Javascript
JS中SetTimeout和SetInterval使用初探
Mar 23 Javascript
vue实现动态数据绑定
Apr 28 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
vue父子组件的通信方法(实例详解)
Nov 10 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 04 Javascript
微信小程序实现下拉加载更多商品
Dec 29 Javascript
招聘网站基于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
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
详解如何较好的使用js
2016/12/16 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
JS路由跳转的简单实现代码
2017/09/21 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
Python银行系统实战源码
2019/10/25 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
我的大学生活职业生涯规划
2014/01/02 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
五一劳动节活动记录
2014/03/23 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
mysql事务隔离级别详情
2021/10/24 MySQL
DIY胆机必读:各国电子管评价
2022/04/06 无线电
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技