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 相关文章推荐
初学Javascript的一些总结
Nov 03 Javascript
ExtJs的Date格式字符代码
Dec 30 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
Oct 22 Javascript
document节点对象的获取方式示例介绍
Dec 24 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
详解webpack 多入口配置
Jun 16 Javascript
Bootstrap Table快速完美搭建后台管理系统
Sep 20 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
Aug 22 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
心扬JS分页函数代码
2010/09/10 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
mock.js模拟前后台交互
2019/07/25 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
win10系统中安装scrapy-1.1
2016/07/03 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
分析Python读取文件时的路径问题
2018/02/11 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Python文件操作函数用法实例详解
2019/12/24 Python
Keras自定义IOU方式
2020/06/10 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
初中生三年学习生活的自我评价
2013/11/03 职场文书
庆元旦活动总结
2014/07/09 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书