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 插件 将this下的div轮番显示
Apr 09 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
使用js的replace()方法查找字符示例代码
Oct 28 Javascript
Javascript和Java获取各种form表单信息的简单实例
Feb 14 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
Oct 31 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
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
python多进程操作实例
2014/11/21 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python读取xlsx的方法
2018/12/25 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
django中瀑布流写法实例代码
2019/10/14 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
儿科护士自我鉴定
2013/10/14 职场文书
学前教育毕业生自荐信范文
2013/12/24 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
责任担保书范文
2014/05/21 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
《风筝》教学反思
2016/02/23 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
JavaScript 对象创建的3种方法
2021/11/17 Javascript