IPv6 的完整写法是 8 段、每段 1-4 位十六进制。下面这条规则匹配完整写法,不覆盖 :: 缩写形式。
默认正则
/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/
匹配完整写法(8 段十六进制)的 IPv6 地址。
IPv6 地址为 128 位,完整写法分成 8 段十六进制,每段 1-4 位,用冒号分隔。
实际书写中大量使用 :: 缩写连续零段,这会让正则变得复杂。本页规则先保证完整写法可靠。
如需支持缩写形式,建议先用解析库或专门算法展开,再用本规则校验。
2001:0db8:85a3:0000:0000:8a2e:0370:7334fe80:0000:0000:0000:0204:61ff:fe9d:f1562001:db8::12001:db8:85a3gggg::1Q:为什么不匹配 2001:db8::1?
该规则只接受 8 段完整写法。:: 是零段缩写,需要先展开成 8 段再校验。
Q:如何支持缩写形式?
可先按 :: 拆分并补零到 8 段,再用本规则校验;直接写覆盖所有缩写情况的正则会非常复杂。
Q:大小写敏感吗?
不敏感。规则同时接受 a-f 与 A-F。
Q:能区分公网与链路本地地址吗?
不能。本规则只做格式校验,不判断地址前缀含义。