我正在尝试找到正确的正则表达式来将字符串与 Rust 中的 Ipv6Cidr 相匹配。
示例文本: 最大字符数:
fe06:4567:ed56:ed56:ed56:ed56:ed56::/128
最小值:f::/16
冒号之间的字符可以是 a-f 和 0-9。冒号之间最多可以有 4 个字符,最少 1 个。冒号最多可以有 6 个,最少 1 个。双冒号和末尾的 / 是必需的。斜杠后面的数字范围是16-128
如有任何帮助,我们将不胜感激。不一定是 Rust 中的正则表达式。任何语言的正则表达式都会有帮助
尝试了不同的正则表达式组合,但甚至没有接近。我对正则表达式非常讨厌。
以下内容应该适用于 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])