复制代代码如下:
// 文字通り rfc3986 の ABNF から(「WCP」のおかげで)
function validateIPv6($IP)
{
return preg_match('/A
(?:
(?:
(?:[a- f0-9]{1,4}:){6}
::(?:[a-f0-9]{1,4}:){5}
(? :[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){4}
(?:(?:[ a-f0-9]{1,4}:){0,1}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}: ){3}
(?:(?:[a-f0-9]{1,4}:){0,2}[a-f0-9]{1,4})?: :(?:[a-f0-9]{1,4}:){2}
(?:(?:[a-f0-9]{1,4}:){0, 3}[a-f0-9]{1,4})?::[a-f0-9]{1,4}:
(?:(?:[a-f0-9] {1,4}:){0,4}[a-f0-9]{1,4})?::
)
(?:
[a-f0-9]{1 ,4}:[a-f0-9]{1,4}
(?:(?:[0-9]|[1-9][0-9]|1[0-9 ][0-9]|2[0-4][0-9]|25[0-5]).){3}
(?:[0-9]|[1-9][0 -9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
)
(?:
(?:(?:[a-f0-9]{1,4}:){0,5}[a-f0-9]{1,4})?::[a-f0-9]{ 1,4}
(?:(?:[a-f0-9]{1,4}:){0,6}[a-f0-9]{1,4})?: :
)
)Z/ix',
$IP
);
}
?>