TCP/IP网络编程JAVA TCP/IP Socket详解TCP/IP协议

IPV6地址格式正则表达式

2019-06-12  本文已影响28人  李大龙1997

工作需要需要用正则表达式方式获取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这种地址工作上用不上也不用识别。大家有没有好一点的建议。

上一篇 下一篇

猜你喜欢

热点阅读