校验IPv6地址的正则表达式
<br>基本规则<br> (("FE06::1::2"),false); //只能用一次双冒号<br> (("10.2.3.5"),false); //没有冒号<br> (("00000:000000:0000::1"),false); //每段的长度不超过 4<br> (("0000:0000:0000:0000:0000:0000:0000:0000:0000:1"),false); //总长度不超过 39<br> (("JKLN:ssej::1"),false); //必须是十六进制的数字<br> (("12::45::1"),false); //双冒号必须只能出现一次<br> (("12::44:f:45::1"),false); //双冒号必须只能出现一次(不连续出现)<br> <br> (("ABEF:452::FE10"),true); //正确的合法的 IPv6<br> (("12::1"),true); //合理压缩<br> (("::1"),true); //双冒号压缩发<br> (("0000:0000:0000:0000:0000:0000:0000:0000"),true); //正确无压缩写法<br> (("::1:123:23"),true); //双冒号压缩发<br> (("123:45::ADC:6"),true); //双冒号位置不确定<br><script>
function isIPv6(str)
{
return /:/.test(str)
&&str.match(/:/g).length<8
&&/::/.test(str)
?(str.match(/::/g).length==1
&&/^::$|^(::)?([\da-f]{1,4}(:|::))*[\da-f]{1,4}(:|::)?$/i.test(str))
:/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str);
}
</script>
<input id=txt><input type=button value=checkIPv6 onclick=alert(isIPv6(txt.value))>
·
页:
[1]