下面这个函数是我按照ipv6的定义写的判断,可以用来判断正常的,缩写的ipv6格式,同时可以判断ipv6和ipv4混合的格式
- //统计 10F: 或者:10B的个数
- function cLength(str){
- var reg = /([0-9a-f]{1,4}:)|(:[0-9a-f]{1,4})/gi;
- var temp = str.replace(reg,' ');
- return temp.length;
- }
- /*
- * 判断ipv6格式
- * @author yifangyou
- * @version gslb 2011-03-10
- * */
- function isIPv6(tmpstr)
- {
- //CDCD:910A:2222:5498:8475:1111:3900:2020
- var patrn=/^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/i;
- var r=patrn.exec(tmpstr)
- if(r)
- {
- return true;
- }
- if(tmpstr=="::"){
- return true;
- }
- //F:F:F::1:1 F:F:F:F:F::1 F::F:F:F:F:1格式
- patrn=/^(([0-9a-f]{1,4}:){0,6})((:[0-9a-f]{1,4}){0,6})$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- var c=cLength(tmpstr);
- if(c<=7 && c>0)
- {
- return true;
- }
- }
- //F:F:10F::
- patrn=/^([0-9a-f]{1,4}:){1,7}:$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- return true;
- }
- //::F:F:10F
- patrn=/^:(:[0-9a-f]{1,4}){1,7}$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- return true;
- }
- //F:0:0:0:0:0:10.0.0.1格式
- patrn=/^([0-9a-f]{1,4}:){6}(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )
- return true;
- }
- //F::10.0.0.1格式
- patrn=/^([0-9a-f]{1,4}:){1,5}:(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- if(r[2]<=255 && r[3]<=255 &&r[4]<=255 && r[5]<=255 )
- return true;
- }
- //::10.0.0.1格式
- patrn=/^::(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i;
- r=patrn.exec(tmpstr);
- if(r)
- {
- if(r[1]<=255 && r[2]<=255 &&r[3]<=255 && r[4]<=255)
- return true;
- }
- return false;
- }
阅读(2742) | 评论(0) | 转发(0) |