CIDR表示法中IPV6地址的正则表达式

问题描述 投票:5回答:1

我正在尝试编写一个lex模式,这将允许我识别IPV6地址,包括带有CIDR表示法的IPV6地址。我使用的模式如下所示。

IPV4ADDRESS_CIDR [ \t]*(((2(5[0-5]|[0-4][0-9])|[01]?[0-9][0-9]?)\.){3}(2(5[0-5]|[0-4][0-9])|[01]?[0-9][0-9]?)(\/(3[012]|[12]?[0-9])))[ \t]*
IPV4ADDRESS      [ \t]*(([[:digit:]]{1,3}"."){3}([[:digit:]]{1,3}))[ \t]*
hex4             ([[:xdigit:]]{1,4})
hexseq           ({hex4}(:{hex4})*)
hexpart          ({hexseq}|({hexseq}::({hexseq}?))|::{hexseq})
IPV6ADDRESS      [ \t]*({hexpart}(":"{IPV4ADDRESS})?)[ \t]*
IPV6ADDRESS_CIDR [ \t]*(IPV6ADDRESS)(\/(1[01][0-9]|12[0-8]|[0-9]{1,2}))[ \t]*

IPV6ADDRESS_CIDR的正则表达式没有按预期工作。我正在测试

2001:1234::5678:5:6:7:8/64 

它似乎没有正确识别它。我在这里犯了一些错误?

regex ip-address ipv6 lex cidr
1个回答
0
投票

我已设法获取IPV6地址的正则表达式,如下所示。

IPV6ADDRESS_CIDR [\ t] {IPV6ADDRESS}(/(1 [01] [0-9] | 12 [0-8] | [0-9] {1,2}))[\ t]

我已经测试了上面的内容并且它正在工作。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.