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 相关文章推荐
jquery.ui.draggable中文文档
Nov 24 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
详解vue2路由vue-router配置(懒加载)
Apr 08 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 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
php GD绘制24小时柱状图
2008/06/28 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP7新功能总结
2019/04/14 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
深入理解javascript动态插入技术
2013/11/12 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
MAC中PyCharm设置python3解释器
2017/12/15 Python
Python中常用的os操作汇总
2020/11/05 Python
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
财务方面个人工作的自我评价
2013/12/28 职场文书
中学教师请假制度
2014/02/03 职场文书
校庆接待方案
2014/03/18 职场文书
四查四看整改措施
2014/09/19 职场文书
经典爱情感言
2015/08/03 职场文书
国际贸易实训总结
2015/08/03 职场文书