IPV6地址格式正则表达式
工作需要需要用正则表达式方式获取ipv6地址,找了很网页发现都不全面,因为ipv6地址不仅仅包含“:”、而且包含“::”和掩码"/xxx"。
1、IPv6首选格式
将IPv6中的128位,也就是共32个字符完完整整,一个不漏地全写出来,比如下面就是一些IPv6地址的首选格式表示形式:
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0001
2001:0410:0000:1234:FB00:1400:5000:45FF
3ffe:0000:0000:0000:1010:2a2a:0000:0001
FE80:0000:0000:0000:0000:0000:0000:0009
FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
2、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:45FF
3、ipv6地址日常使用需要带掩码信息
目的是显示网络地址位。
4.正则表达式
(([a-f0-9]{1,4}:|){0,7}[::]{0,1}[a-f0-9]{1,4})/\d{1,3}
能够识别标准的ipv6地址,因工作中基本上都是2409:8054:48::1019/128这种地址,::1这种地址工作上用不上也不用识别。大家有没有好一点的建议。