IPv6参数检验

//判断输入字符串是否为空或者全部都是空格
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;
}

你可能感兴趣的:(Java及web类)