检查IPv4和IPv6地址的正则表达式

原文:http://hi.baidu.com/hwangustc/blog/item/1747d649ff3bfbfa82025c5d.html

今天看了点正则表达式(regular expression)的语法,学了下IPv4和IPv6地址的检查方法。

IPv4地址:
^((25[0-5]|2[0-4]\d|[0-1]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[0-1]?\d\d?)$

IPv6地址:
^\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*$

IPv6地址的正则表达式有点复杂,主要是IPv6的地址写法太多了。。。

时间: 2024-09-18 17:59:04

检查IPv4和IPv6地址的正则表达式的相关文章

IP地址(IPv4)/IPv6地址的正则表达式

原地址:http://pfeishao.blog.163.com/blog/static/18162337020112113130453/ Pv4地址正则表达式:^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$测试环境:Javascript/.Net/C++/JAVA特点:匹配IPv4地址 IPv6地址正则表达式:^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$测试环境:Javasc

协议森林04 地址耗尽危机 (IPv4与IPv6地址)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 谢谢xwpcom纠错   IP地址是IP协议的重要组成部分,它可以识别接入互联网中的任意一台设备.在IP接力中,我们已经看到,IP包的头部写有出发地和目的地的IP地址.IP包上携带的IP地址和路由器相配合,最终允许IP包从互联网的一台电脑传送到另一台. 在IP接力中,我们是以IPv4为例说明IP包的格式的.IPv4和IPv6是先后出现的两个IP协议版本.IPv4的地址就是一个32位的0/1序列,

php获取用户IPv4或IPv6地址的代码_php技巧

其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西--无奈JSON获取到的只是本机服务器的IP.算了,不研究了,何况人家提供的widget也挺好用的.谷歌了一下,找到这段代码,可以根据用户环境获取IP地址. 例如IPv6访问 www.shiwo.de 则获取到的是用户的IPv6地址 p.s 前提是网站做了A和AAAA解析 复制代码 代码如下: <?php function getIP() /*获取客户端IP*/ { if (@$_SERVER["HT

js:校验IPv6地址的正则表达式

<script> function isIPv6(str) { return str.match(/:/g).length<=7 &&/::/.test(str) ?/^([\da-f]{1,4}(:|::)){1,6}[\da-f]{1,4}$/i.test(str) :/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str); } </script> <input id=txt><input type=b

android-求大神,Android通过代码,修改本机ipv6地址和DNS?

问题描述 求大神,Android通过代码,修改本机ipv6地址和DNS? 现在在做个客户端,目前状况就是: 1.连接着可以上ipv6的路由. 2.程序可查看本机ipv4和ipv6地址,可修改ipv4地址 3.需要的是修改ipv6地址. 网上查了很多,2中的可达到,但其实我是需要修改ipv6地址. 修改ipv4地址时: WifiConfiguration wifiConf = null; WifiManager wifiManager = (WifiManager) getSystemServic

IPv4地址枯竭 但中国IPv6地址使用率只有0.5%

"随着全球互联网的广泛深入应用,IPv4地址枯竭的危机不再是'狼来了'的玩笑."14日,中国科学院计算机网络信息中心总工程师阎保平代表在接受科技日报记者采访时表示,面对IPv4地址的匮乏,启用IPv6地址,推动IPv6网络的应用,已成为互联网发展的必然趋势. IP地址是互联网协议的重要组成部分,它可以识别接入互联网中的任意一台设备.而IPv4和IPv6是先后出现的两种IP协议版本.相比IPv4,IPv6除了有更大的地址空间,曾有一种说法形容,在IPv6协议下,地球上每一粒沙子都将拥有自

IPv4地址枯竭,但中国IPv6地址使用率只有0.5%

"随着全球互联网的广泛深入应用,IPv4地址枯竭的危机不再是'狼来了'的玩笑."14日,中国科学院计算机网络信息中心总工程师阎保平代表在接受科技日报记者采访时表示,面对IPv4地址的匮乏,启用IPv6地址,推动IPv6网络的应用,已成为互联网发展的必然趋势. IP地址是互联网协议的重要组成部分,它可以识别接入互联网中的任意一台设备.而IPv4和IPv6是先后出现的两种IP协议版本.相比IPv4,IPv6除了有更大的地址空间,曾有一种说法形容,在IPv6协议下,地球上每一粒沙子都将拥有自

Linux发行版们应该禁用 IPv4 映射的 IPv6 地址吗?

从各方面来看,互联网向 IPv6 的过渡是件很缓慢的事情.不过在最近几年,可能是由于 IPv4 地址资源的枯竭,IPv6 的使用处于上升态势.相应的,开发者也有兴趣确保软件能在 IPv4 和 IPv6 下工作.但是,正如近期 OpenBSD 邮件列表中的讨论所关注的,一个使得向 IPv6 转换更加轻松的机制设计同时也可能导致网络更不安全--并且 Linux 发行版们的默认配置可能并不安全. 地址映射 IPv6 在很多方面看起来可能很像 IPv4,但它是一个不同地址空间的不同的协议.服务器程序想要

IPv4与IPv6数据报格式详解

摘要: 本文给出IPv4与IPv6数据报格式示意图,并整理了各个字段含义,最后对比IPv4与IPv6数据报格式的区别. 一.IPv4数据报 图1 IPv4数据报格式版本号(version) 不同的IP协议版本使用不同的数据报格式.首部长度(HL, Internet Head Length) 确定IP数据报中数据部分实际从哪里开始,包含可变数量的选项.若IP数据报没有包含选项,则IP数据报首部长度为20字节.服务类型(TOS, Type Of Service) 更好地服务不同类型IP数据报(如实时