当前位置: 首页 > news >正文

javascript判断IPV6格式

随着ipv6的普及,在web上添加ip6地址的要求逐渐增多,下面这个函数是我按照ipv6的定义写的判断,可以用来判断正常的,缩写的ipv6格式,同时可以判断ipv6和ipv4混合的格式:

 

 
 
  1. //统计 10F: 或者:10B的个数  
  2.  
  3. function cLength(str){   
  4.  
  5.   var reg = /([0-9a-f]{1,4}:)|(:[0-9a-f]{1,4})/gi;   
  6.  
  7.   var temp = str.replace(reg,' ');   
  8.  
  9.   return temp.length;   
  10.  
  11.  }   
  12.  
  13. /*  
  14.  
  15.  * 判断ipv6格式  
  16.  
  17.  * @author yifangyou  
  18.  
  19.  * @version gslb 2011-03-10  
  20.  
  21.  * */       
  22.  
  23. function isIPv6(tmpstr)  
  24.  
  25. {  
  26.  
  27.         //CDCD:910A:2222:5498:8475:1111:3900:2020   
  28.  
  29.         var patrn=/^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/i;   
  30.  
  31.         var r=patrn.exec(tmpstr)  
  32.  
  33.         if(r)  
  34.  
  35.         {  
  36.  
  37.             return true;  
  38.  
  39.         }  
  40.  
  41.         if(tmpstr=="::"){  
  42.  
  43.             return true;  
  44.  
  45.         }  
  46.  
  47.         //F:F:F::1:1 F:F:F:F:F::1 F::F:F:F:F:1格式  
  48.  
  49.         patrn=/^(([0-9a-f]{1,4}:){0,6})((:[0-9a-f]{1,4}){0,6})$/i;   
  50.  
  51.         r=patrn.exec(tmpstr);  
  52.  
  53.         if(r)  
  54.  
  55.         {      
  56.  
  57.             var c=cLength(tmpstr);  
  58.  
  59.             if(c<=7 && c>0)  
  60.  
  61.             {  
  62.  
  63.                 return true;  
  64.  
  65.             }  
  66.  
  67.         }                  
  68.  
  69.         //F:F:10F::  
  70.  
  71.         patrn=/^([0-9a-f]{1,4}:){1,7}:$/i;   
  72.  
  73.         r=patrn.exec(tmpstr);  
  74.  
  75.         if(r)  
  76.  
  77.         {  
  78.  
  79.             return true;  
  80.  
  81.         }  
  82.  
  83.         //::F:F:10F  
  84.  
  85.         patrn=/^:(:[0-9a-f]{1,4}){1,7}$/i;   
  86.  
  87.         r=patrn.exec(tmpstr);  
  88.  
  89.         if(r)  
  90.  
  91.         {  
  92.  
  93.             return true;  
  94.  
  95.         }  
  96.  
  97.         //F:0:0:0:0:0:10.0.0.1格式  
  98.  
  99.         patrn=/^([0-9a-f]{1,4}:){6}(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
  100.  
  101.         r=patrn.exec(tmpstr);  
  102.  
  103.         if(r)  
  104.  
  105.         {  
  106.  
  107.             if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )  
  108.  
  109.             return true;  
  110.  
  111.         }  
  112.  
  113.         //F::10.0.0.1格式  
  114.  
  115.         patrn=/^([0-9a-f]{1,4}:){1,5}:(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
  116.  
  117.         r=patrn.exec(tmpstr);  
  118.  
  119.         if(r)  
  120.  
  121.         {  
  122.  
  123.             if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )  
  124.  
  125.                 return true;  
  126.  
  127.         }  
  128.  
  129.         //::10.0.0.1格式  
  130.  
  131.         patrn=/^::(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;   
  132.  
  133.         r=patrn.exec(tmpstr);  
  134.  
  135.         if(r)  
  136.  
  137.         {  
  138.  
  139.             if(r[1]<=255 && r[2]<=255 &&r[3]<=255 && r[4]<=255)  
  140.  
  141.                 return true;  
  142.  
  143.         }  
  144.  
  145.         return false;  
  146.  
  147. }  

 



     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/615893,如需转载请自行联系原作者

相关文章:

  • 【sql】部门最高工资 Department Highest Salary
  • 用shell批量修改类似的文件名
  • 【★】交换层网关协议大总结!
  • 使用vRealize Operations for Horizon,做高效的虚拟桌面系统管理员
  • Tomcat6+JDK6如何加固,解决Logjam attack,
  • Word2007“由于文件许可权错误,Word无法完成保存操作”问题的解决方法
  • Centos压缩解压
  • Linux执行命令常见的英语语句
  • asn1编码格式的解析过程
  • top2
  • 远程连接服务器工具:sshpass
  • U盘安装Debian 6 amd64版本
  • Zabbix调优的几个原则
  • HytrixCommand实践总结
  • 探索iptables BPF模块的悲惨历程
  • .pyc 想到的一些问题
  • Angular Elements 及其运作原理
  • CentOS7 安装JDK
  • CSS盒模型深入
  • Javascript基础之Array数组API
  • PHP 7 修改了什么呢 -- 2
  • Vue全家桶实现一个Web App
  • Web标准制定过程
  • 蓝海存储开关机注意事项总结
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 写给高年级小学生看的《Bash 指南》
  • 用Canvas画一棵二叉树
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​io --- 处理流的核心工具​
  • #Linux(Source Insight安装及工程建立)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.ajax()参数及用法
  • (2.2w字)前端单元测试之Jest详解篇
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (libusb) usb口自动刷新
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (六)软件测试分工
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (原創) 未来三学期想要修的课 (日記)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .Net接口调试与案例
  • .Net中的设计模式——Factory Method模式
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @Autowired和@Resource的区别