Regex 查找ipv6地址范围的正则表达式

Regex 查找ipv6地址范围的正则表达式,regex,ip,ipv6,Regex,Ip,Ipv6,我需要具有以下掩码的ipv6地址的正则表达式: 2620:0000:2820::/48 也就是说,我想要一个regex,它可以表示以下地址范围: 2620:0000:2820:0000:0000:0000:0000:0000 到 到目前为止,我可以得出以下结论: "^(2620:0000:2820:){1}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}$" 正确的表达式是什么?这个正则表达

我需要具有以下掩码的ipv6地址的正则表达式: 2620:0000:2820::/48

也就是说,我想要一个regex,它可以表示以下地址范围:

2620:0000:2820:0000:0000:0000:0000:0000

到目前为止,我可以得出以下结论:

"^(2620:0000:2820:){1}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}:[0-9a-fA-F]{4}$"
正确的表达式是什么?

这个正则表达式怎么样:-

'/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD'

也检查一下这个。

你得到的有什么问题吗?只要把{4}改成{1,4}就行了。如果你学会了如何使用锤子,那么每个问题看起来都像钉子。你不应该那样做——你总是会错过一些东西。例如,您将错过这个:2620:0000:2820:0000::0000:0000和这个:2620:0000:2820:ffff::0000,谁知道还有什么。正确的解决方案是将IPv6转换为内部表示,并使用bitsI可能会怀疑这种正则表达式,因为不需要前瞻。在没有这种需要的情况下,编译应该会导致无歧义的通过或失败。
'/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD'