Ipv6 Cidr 的正则表达式

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

我正在尝试找到正确的正则表达式来将字符串与 Rust 中的 Ipv6Cidr 相匹配。

示例文本: 最大字符数:

fe06:4567:ed56:ed56:ed56:ed56:ed56::/128
最小值:
f::/16

冒号之间的字符可以是 a-f 和 0-9。冒号之间最多可以有 4 个字符,最少 1 个。冒号最多可以有 6 个,最少 1 个。双冒号和末尾的 / 是必需的。斜杠后面的数字范围是16-128

如有任何帮助,我们将不胜感激。不一定是 Rust 中的正则表达式。任何语言的正则表达式都会有帮助

尝试了不同的正则表达式组合,但甚至没有接近。我对正则表达式非常讨厌。

regex rust ipv6
1个回答
0
投票

以下内容应该适用于 Rust

我将提供创建该模式所采取的步骤。

作为参考,这里是 Wikipedia 关于 regex 的文章。
维基百科 – 正则表达式

“...冒号之间的字符可以是 a-f 和 0-9 ...”

[a-f\d]

“...冒号之间最多可以有 4 个字符,最少 1 个。...”

[a-f\d]{1,4}

“...最多可以有 6 个冒号,最少 1 个。...”

[a-f\d]{1,4}(?::[a-f\d]{1,4}){0,5}

“...双冒号和末尾的 / 是必需的。...”

[a-f\d]{1,4}(?::[a-f\d]{1,4}){0,6}::/

“...斜线后的数字范围为16-128 ...”

[a-f\d]{1,4}(?::[a-f\d]{1,4}){0,6}::/(?:1[6-9]|[2-9]\d|1[0-1]\d|12[0-8])
© www.soinside.com 2019 - 2024. All rights reserved.