gpt4 book ai didi

regex - 如何将 IPv6 地址与 Perl 正则表达式匹配?

转载 作者:行者123 更新时间:2023-12-04 01:30:44 31 4
gpt4 key购买 nike

所以我需要匹配一个可能有也可能没有掩码的 ipv6 地址。不幸的是,我不能只使用库来解析字符串。

掩码位很容易,在这种情况下:

(?:\/\d{1,3})?$/

困难的部分是 ipv6 地址的不同格式。它需要匹配::beef、beef::、beef::beef 等。

更新:我快到了..
/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i

在这种情况下,我仅限于使用 perl 的正则表达式。

最佳答案

This包含一个 Regexp::Common 补丁,展示了一个完整、准确、经过测试的 IPv6 正则表达式。它是 IPv6 语法的直接翻译。 Regexp::IPv6也是准确的。

更重要的是,它包含一个测试套件。用你的正则表达式运行它表明你还有很长的路要走。 19 人中有 10 人错过了。 12 个误报中有 1 个。 IPv6 包含许多特殊的速记,因此很容易出现微妙的错误。

阅读 IPv6 地址的最佳位置是 RFC 3986第 3.2.2 节。

关于regex - 如何将 IPv6 地址与 Perl 正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1802722/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com