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

 更新时间:2015年05月10日 16:37:56   投稿:hebedich  
本文给大家分享的是一组判断IP地址是否合法,判断子网掩码是否合法,验证输入的网关地址是否合法的javascript代码,十分的简单实用,有需要的小伙伴可以参考下。

本代码是从个人项目中提取出来的,应该可以算的上是相当全面有效的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高级程序设计 扩展--关于动态原型

    JavaScript高级程序设计 扩展--关于动态原型

    前文是基于《JavaScript高级程序设计》中关于对象创建的笔记和总结。
    2010-11-11
  • 解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码

    解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码

    这句代码在IE9之前曾被称为世界上最短的IE判定代码。代码虽短但确包含了不少javascript基础知识在里面。
    2011-05-05
  • js裁剪(分隔)字符串的三种常用方法

    js裁剪(分隔)字符串的三种常用方法

    在开发中我们经常会遇到对于字符串的部分取舍问题,本文主要介绍了js裁剪(分隔)字符串的三种常用方法,今天我们来看看3中常用的方法来解决这个问题,感兴趣的可以一起了解一下
    2022-02-02
  • 使用SpreadJS快速清除Excel中工作表保护密码

    使用SpreadJS快速清除Excel中工作表保护密码

    这篇文章主要为大家介绍了使用SpreadJS快速清除Excel中工作表保护密码方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 使用原生javascript开发计算器实例代码

    使用原生javascript开发计算器实例代码

    这篇文章主要给大家介绍了关于如何使用原生javascript开发计算器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 详解ES6通过WeakMap解决内存泄漏问题

    详解ES6通过WeakMap解决内存泄漏问题

    本篇文章主要介绍了详解ES6通过WeakMap解决内存泄漏问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 微信小程序实现客服功能(客服消息)的全过程

    微信小程序实现客服功能(客服消息)的全过程

    在最近做的微信小程序中需要实现一个自带的客服功能,下面这篇文章主要给大家介绍了关于微信小程序实现客服功能(客服消息)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • JS触摸与手势事件详解

    JS触摸与手势事件详解

    这篇文章主要为大家详细介绍了JS触摸与手势事件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 浅谈JavaScript中面向对象的的深拷贝和浅拷贝

    浅谈JavaScript中面向对象的的深拷贝和浅拷贝

    下面小编就为大家带来一篇浅谈JavaScript中面向对象的的深拷贝和浅拷贝。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 微信小程序实现滚动条功能

    微信小程序实现滚动条功能

    这篇文章主要为大家详细介绍了微信小程序实现滚动条功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论