这是一个全面的IPv6正则表达式,它测试所有有效的IPv6文本表示形式(扩展、压缩、扩展混合、压缩混合),并附带可选前缀长度。它还将各个部分捕获到捕获组中。您可以通过在捕获组的开头加上?:
来跳过捕获组。
这是我在我的IPvX IP计算器中创建和使用的正则表达式,用于IPv4和IPv6。
^
(
(
(?:
(?:[0-9A-F]{1,4}:){5}[0-9A-F]{1,4}
| (?:[0-9A-F]{1,4}:){4}:[0-9A-F]{1,4}
| (?:[0-9A-F]{1,4}:){3}(?::[0-9A-F]{1,4}){1,2}
| (?:[0-9A-F]{1,4}:){2}(?::[0-9A-F]{1,4}){1,3}
| [0-9A-F]{1,4}:(?::[0-9A-F]{1,4}){1,4}
| (?:[0-9A-F]{1,4}:){1,5}
| :(?::[0-9A-F]{1,4}){1,5}
| :
):
)
(
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])
)
)
|
(
(?:
(?:[0-9A-F]{1,4}:){7}[0-9A-F]{1,4}
| (?:[0-9A-F]{1,4}:){6}:[0-9A-F]{1,4}
| (?:[0-9A-F]{1,4}:){5}(?::[0-9A-F]{1,4}){1,2}
| (?:[0-9A-F]{1,4}:){4}(?::[0-9A-F]{1,4}){1,3}
| (?:[0-9A-F]{1,4}:){3}(?::[0-9A-F]{1,4}){1,4}
| (?:[0-9A-F]{1,4}:){2}(?::[0-9A-F]{1,4}){1,5}
| [0-9A-F]{1,4}:(?::[0-9A-F]{1,4}){1,6}
| (?:[0-9A-F]{1,4}:){1,7}:
| :(?::[0-9A-F]{1,4}){1,7}
| ::
)
)
(?:
/(12[0-8]|1[0-1][0-9]|[1-9]?[0-9])
)?
$
IPv4正则表达式奖励:
^
(?:
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])
)
(?:
/(3[0-2]|[1-2]?[0-9])
)?
$# Anchor
SomeModule
,要么去CPAN下载模块并复制粘贴。 - innaM