工作需要需要用正则表达式方式获取ipv6地址,找了很网页发现都不全面,因为ipv6地址不仅仅包含“:”、而且包含“::”和掩码"/xxx"。 1、IPv6首选格式将IPv6中的128位,也就是共32个字符完完整整,一个不漏地全写出来,比如下面就是一些IPv6地址的首选格式表示形式:0000:0000:0000:0000:0000:0000:0000:00000000:0000:0000:0000:0000:0000:0000:00012001:0410:0000:1234:FB00:1400:5000:45FF3ffe:0000:0000:0000:1010:2a2a:0000:0001FE80:0000:0000:0000:0000:0000:0000:0009FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF2、IPV6 压缩格式从前面一个IPv6地址表示方法首选格式表示方法中可以看出,一个完整的IPv6地址中,会经常性的出现许多个0,而我们知道,许多时候,0是毫无意义的,0表示没有,写出来,也表示没有,不写,也同样表示没有,那么我们就考虑能否将不影响地址结果的0给省略不写,这样就可以大大节省时间,也方便人们阅读和书写,这样的将地址省略0的表示方法,称为压缩格式。经过测试以下正则表达式能完美匹配IPV6地址。下面来看一些整个段4个字符都为0的IPv6地址使用压缩格式来表示:例1:压缩前:0000:0000:0000:0000:0000:0000:0000:0000压缩后:::说明: 可以看出,由于这个地址的8个段全部都为0,所以只用 :: 就将整个地址表示出来,当计算机拿到这个压缩后的地址时,发现比正常的128位少了128位,那么就会在 :: 的地方补上128个0,结果为:0000:0000:0000:0000:0000:0000:0000:0000可以看出,计算机还原的地址就是压缩之前的真实地址。例2:压缩前:0000:0000:0000:0000:0000:0000:0000:0001压缩后:::0001说明: 可以看出,压缩后的地址比正常的128位少了112位,计算机就会在 :: 的地方补上112个0,结果为:0000:0000:0000:0000:0000:0000:0000:0001可以看出,计算机还原的地址就是压缩之前的真实地址。例3:压缩前:2001:0410:0000: 0000:FB00:1400:5000:45FF压缩后:2001:0410 ::FB00:1400:5000:45FF说明: 可以看出,压缩后的地址比正常的128位少了32位,计算机就会在 :: 的地方补上32个0,结果为:2001:0410:0000: 0000:FB00:1400:5000:45FF3、ipv6地址日常使用需要带掩码信息目的是显示网络地址位。华为路由器上常用的ipv6地址格式如下:2409:8054:48::1006/1282409:8055:48:1060::/1272409:8055:48:1061::/1274.正则表达式(([a-f0-9]{1,4}:|){0,7}[::]{0,1}[a-f0-9]{1,4})/d{0,3}) 能够识别标准的ipv6地址,因工作中基本上都是2409:8054:48::1019/128这种地址。大家有没有好一点的建议。
