区分IPv4和IPV6 regexp-match for:足够



我有一个子例程,它需要根据地址是IPV4还是IPV6执行两个不同的操作。如果我只是对":"进行模式匹配,以确定地址是否为IPV6?

有什么例外吗?

例如:1.1.1.1没有冒号1::1具有:

以上也适用于子网:例如:1.2.3.4/242002年::1.2.3.4/120

我不想对IPV4或IPV6使用巨大的regexp模式匹配。谢谢

如果您想要完整的IPV6匹配,那么有一个完整的正则表达式此处:

简而言之,如果输入中的冒号计数>2,将其视为IPv6。


我遇到了同样的问题,输入可以是IPv4或IPv6,也可以是主机名和可选的端口。根据输入,需要使用适当的正则表达式对其进行验证。

我考虑的方法是计算输入中的冒号数。如果CCD_ 1=>IPv6,或者IPv4或主机名。如果端口存在于[]:之间,则随后基于端口的存在来提取IPv6。对于v4/主机,只需使用:进行拆分即可。剩下的字符串是一个纯IP地址(v4/v6)或主机名,可以使用适当的regex进行评估。

最新更新