//判断输入字符串是否为空或者全部都是空格
function isNull( str ){
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
return re.test(str);
}
//检查ipv6地址 正则表达式
function checkIpv6(str)
{
var Ipv6 = str.substring(0,str.indexOf(":"));
if (isNull(str) || isNull(Ipv6)) {
return false;
}
return str.match(/:/g).length<=7
&&/::/.test(str)
?/^([\da-f]{0,4}(:|::)){1,6}[\da-f]{0,4}$/i.test(str)
:/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str);
}
//将ipv6转为标准ip 8段式
function transitIp(ipaddr)//将IPV6地址补全
{
var ipaddress = ipaddr.split("/");
var ipaddrs = ipaddress[0].split(":");
if(ipaddrs.length<8)
{
var count = 0;
for(var i=0;i
{
if(ipaddrs[i]=="")
{
if(count==1)
{
ipaddrs[i] = addZero(4);
continue;
}
ipaddrs[i] = addZero((9-ipaddrs.length)*4);
count++;
}
else
{
ipaddrs[i] += ":";
}
}
}
else if(ipaddrs.length==8)
{
for(var i=0;i<8;i++)
{
ipaddrs[i] += ":";
}
}
return initaddr(ipaddrs);//获得了ip地址的完整字符串
}
//添加为0的项
function addZero(num)
{
var zerostr = "";
for(var i=1;i
{
zerostr+="0";
if(i%4==0)
{
zerostr+=":";
}
}
return zerostr;
}
//转为标准ip地址
function initaddr(ipaddrs)
{
var iparray ="";
for(var i=0;i
{
iparray+=ipaddrs[i];
}
if(iparray.charAt(iparray.length-1)==':')
{
iparray = iparray.substr(0,iparray.length-1);
}
return iparray;
}
//判断ipv6地址是否为多播地址
function webNetIsIpV6MCast(hostIp)
{
var Ipv6Mc = hostIp.substring(0,hostIp.indexOf(":"));
if((parseInt(Ipv6Mc,16) & 0xff00) == 0xff00)
{
return true;
}
else
{
return false;
}
}
//判断该ipV6Host是不是false ,因为false通常代表IP ANY hostIp位标准八段式
function webNetIsIpV6Any(hostIp)
{
var Ipv6add0 = hostIp.substring(0,4);
var Ipv6add1 = hostIp.substring(5,9);
var Ipv6add2 = hostIp.substring(10,14);
var Ipv6add3 = hostIp.substring(15,19);
var Ipv6add4 = hostIp.substring(20,24);
var Ipv6add5 = hostIp.substring(25,29);
var Ipv6add6 = hostIp.substring(30,34);
var Ipv6add7 = hostIp.substring(35,39);
if(parseInt(Ipv6add0) == 0 && parseInt(Ipv6add1) == 0 &&
parseInt(Ipv6add2) == 0 && parseInt(Ipv6add3) == 0 &&
parseInt(Ipv6add4) == 0 && parseInt(Ipv6add5) == 0 &&
parseInt(Ipv6add6) == 0 && parseInt(Ipv6add7) == 0)
{
return true;
}
else
{
return false;
}
}
//判断该ipV6Host是不是环回地址 hostIp位标准八段式
function webNetIsIpV6LoopBack(hostIp)
{
var Ipv6add0 = hostIp.substring(0,4);
var Ipv6add1 = hostIp.substring(5,9);
var Ipv6add2 = hostIp.substring(10,14);
var Ipv6add3 = hostIp.substring(15,19);
var Ipv6add4 = hostIp.substring(20,24);
var Ipv6add5 = hostIp.substring(25,29);
var Ipv6add6 = hostIp.substring(30,34);
var Ipv6add7 = hostIp.substring(35,39);
if(parseInt(Ipv6add0) == 0 && parseInt(Ipv6add1) == 0 &&
parseInt(Ipv6add2) == 0 && parseInt(Ipv6add3) == 0 &&
parseInt(Ipv6add4) == 0 && parseInt(Ipv6add5) == 0 &&
parseInt(Ipv6add6) == 0 && parseInt(Ipv6add7) == 1)
{
return true;
}
else
{
return false;
}
}
//判断该ipV6Host是不是单播IP 排除任波,组播,环路地址,剩下合法地址为单播
function webNetIsIpV6UCast(hostIp)
{
var ipv6 = transitIp(hostIp);
if(!webNetIsIpV6Any(ipv6) &&
!webNetIsIpV6MCast(ipv6) &&
!webNetIsIpV6LoopBack(ipv6))
{
return true;
}
return false;
}