我有一个子例程,它需要根据地址是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进行评估。