免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9903 | 回复: 9
打印 上一主题 下一主题

Help:IPV6的正则表达式表示方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-16 23:45 |只看该作者 |倒序浏览
IPv6 地址大小为 128 位。首选的 IPv6 地址表示为:xxxx : xxxx : xxxx : xxxx : xxxx : xxxx : xxxx : xxxx,其中每个 x 是代表一个 4 位的十六进制数字。IPv6 地址范围从 0000:0000:0000:0000:0000:0000:0000:0000 至 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。
    除此首选的格式之外,IPv6 地址还可以其它两种短格式指定:
    1.省略前导零:通过省略前导零指定 IPv6 地址。例如,IPv6 地址 1050:0000:0000:0000:0005:0600:300c:326b 可写为 1050:0:0:0:5:600:300c:326b。
    2.双冒号:通过使用双冒号(::)代替一系列零来指定 IPv6 地址。例如,IPv6 地址 ff06:0:0:0:0:0:0:c3 可写为 ff06::c3。一个 IP 地址中只可使用一次双冒号。

    怎样用正则表达式匹配一个合法的IPV6地址

论坛徽章:
0
2 [报告]
发表于 2008-12-17 00:09 |只看该作者
难点在于IPV6的短格式表示方法:
两个冒号::可以出现在任何位置,用很圡的方法(穷举)可以实现
代码太丑了

论坛徽章:
0
3 [报告]
发表于 2008-12-17 08:42 |只看该作者
模式列表见这里:http://regexlib.com/Search.aspx?k=ipv6
例子之一见这里:
^(^(([0-9A-F]{1,4}(((:[0-9A-F]{1,4}){5}::[0-9A-F]{1,4})|((:[0-9A-F]{1,4}){4}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,1})|((:[0-9A-F]{1,4}){3}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,2})|((:[0-9A-F]{1,4}){2}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,3})|(:[0-9A-F]{1,4}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,4})|(::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,5})|(:[0-9A-F]{1,4}){7}))$|^(::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,6})$)|^::$)|^((([0-9A-F]{1,4}(((:[0-9A-F]{1,4}){3}::([0-9A-F]{1,4}){1})|((:[0-9A-F]{1,4}){2}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,1})|((:[0-9A-F]{1,4}){1}::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,2})|(::[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,3})|((:[0-9A-F]{1,4}){0,5})))|([:]{2}[0-9A-F]{1,4}(:[0-9A-F]{1,4}){0,4})):|::)((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{0,2})\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{0,2})$$

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2008-12-17 09:38 |只看该作者

回复 #3 zhasm 的帖子

要用这种 regexp 的话,最好是用已经写好并经过详细测试的 module,拷贝粘贴绝对不是好主意。

论坛徽章:
0
5 [报告]
发表于 2008-12-17 13:57 |只看该作者
@MMMIX

嗯,有道理。我没有使用过IPV6,只是在网上搜到代码就转过来了。应该是测试过才行。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-12-17 14:07 |只看该作者
原帖由 zhasm 于 2008-12-17 13:57 发表
@MMMIX

嗯,有道理。我没有使用过IPV6,只是在网上搜到代码就转过来了。应该是测试过才行。

MMMIX 的意思是说,网上的代码可能经过多次转载、spider 之后,早就不是正确的了,
你粘贴过来之后,又没有办法进行严格的测试,因此容易出现问题。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2008-12-17 14:11 |只看该作者
原帖由 flw 于 2008-12-17 14:07 发表

MMMIX 的意思是说,网上的代码可能经过多次转载、spider 之后,早就不是正确的了,
你粘贴过来之后,又没有办法进行严格的测试,因此容易出现问题。

就是算把经过严格测试的这种类型的 regexp 拷贝粘贴到你自己的代码里面也绝对不是什么好主意。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2008-12-17 14:12 |只看该作者
原帖由 MMMIX 于 2008-12-17 14:11 发表

就是算把经过严格测试的这种类型的 regexp 拷贝粘贴到你自己的代码里面也绝对不是什么好主意。

嗯。那样容易让人误解代码的作者经常不理胡子。

论坛徽章:
0
9 [报告]
发表于 2008-12-17 14:19 |只看该作者
还是自己慢慢想想吧,看可不可以把表达式搞得简洁一点:wink:

论坛徽章:
0
10 [报告]
发表于 2009-05-30 22:55 |只看该作者
IPV6地址正则表达式:^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^:((:[0-9a-fA-F]{1,4}){1,6}|:)$|^[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,5}|:)$|^([0-9a-fA-F]{1,4}:){2}((:[0-9a-fA-F]{1,4}){1,4}|:)$|^([0-9a-fA-F]{1,4}:){3}((:[0-9a-fA-F]{1,4}){1,3}|:)$|^([0-9a-fA-F]{1,4}:){4}((:[0-9a-fA-F]{1,4}){1,2}|:)$|^([0-9a-fA-F]{1,4}:){5}:([0-9a-fA-F]{1,4})?$|^([0-9a-fA-F]{1,4}:){6}:$
支持压缩,但不支持IPv6与IPv4混合地址(完善之中)。这是我自己写的。

IPv6匹配:
5e:0:0:0:0:0:5668:eeee
5e::5668:eeee
::1:8:8888:0:0:8
1::
::1:2:2:2:2:2
::
1::

IPv6不匹配:
5e::5668::eeee
55555:5e:0:0:0:0:0:5668:eeee

[[i] 本帖最后由 hackvssec 于 2009-5-31 11:13 编辑 [/i]]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP