IP地址和子网掩码的验证

本文介绍了一个用于验证子网掩码合法性的JavaScript函数。该函数通过正则表达式检查子网掩码格式,并确保各部分数值处于有效范围内,同时验证二进制表示中不存在不连续的1。

/**
*函数名:validateMask
*函数功能:验证子网掩码的合法性
*函数作者:236F(fuwei236#gmail.com)
*传入参数:MaskStr:点分十进制的子网掩码(如:255.255.255.192)
*主调函数:
*调用函数:_checkIput_fomartIP(ip)
*返回值:true:MaskStr为合法子网掩码
*false:MaskStr为非法子网掩码
**/

functionvalidateMask(MaskStr)
{
/*有效性校验*/
varIPPattern=/^/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}$/
if(!IPPattern.test(MaskStr))returnfalse;

/*检查域值*/
varIPArray=MaskStr.split(".");
varip1=parseInt(IPArray[0]);
varip2=parseInt(IPArray[1]);
varip3=parseInt(IPArray[2]);
varip4=parseInt(IPArray[3]);
if(ip1<0||ip1>255/*每个域值范围0-255*/
||ip2<0||ip2>255
||ip3<0||ip3>255
||ip4<0||ip4>255)
{
returnfalse;
}

/*检查二进制值是否合法*/
//拼接二进制字符串
varip_binary=_checkIput_fomartIP(ip1)+_checkIput_fomartIP(ip2)+_checkIput_fomartIP(ip3)+_checkIput_fomartIP(ip4);

if(-1!=ip_binary.indexOf("01"))returnfalse;
returntrue;
}


/**
*函数名:_checkIput_fomartIP
*函数功能:返回传入参数对应的8位二进制值
*函数作者:236F(fuwei236#gmail.com)
*传入参数:ip:点分十进制的值(0~255),int类型的值,
*主调函数:validateMask
*调用函数:无
*返回值:ip对应的二进制值(如:传入255,返回11111111;传入1,返回00000001)
**/
function_checkIput_fomartIP(ip)
{
return(ip+256).toString(2).substring(1);//格式化输出(补零)
}

===================分隔符===================

测试页面test.htm

===================分隔符===================
<html>
<head>
<title></title>
<scriptsrc="validateMask.js"></script>
<script>
functiontest(MaskStr)
{
alert("IP地址为:"+MaskStr+"验证结果:"+validateMask(MaskStr));
}
</script>
</head>
<body>
<center>
<h1>子网掩码验证
</h1>
<inputtype="text"name="mask"id="mask"value="">
<inputtype="button"name="mytest"id="mytest"value="点击验证输入框中的值"onclick="test(mask.value)">
</center>
</body>
</html>

 

 

 

==============

 

//验证ip有效性
function validateip(ip) {
var result = false;
if (!(/^(/d{1,3})(/./d{1,3}){3}$/.test(ip))){
return false;
}
var reSpaceCheck = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
var validip = ip.match(reSpaceCheck);
if (validip != null) {
result = true;
}
return result;
}

//验证子网掩码有效性
function validateNetMast(netmask) {
var result = false;
if (!(/^(/d{1,3})(/./d{1,3}){3}$/.test(netmask))){
return true;
}
var reSpaceCheck = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
var validip = netmask.match(reSpaceCheck);
if (validip != null) {
var mask_binary = conversionBinary(netmask);
if(-1 != mask_binary.indexOf("01")){
result = true;
}
} else {
result = true;
}
return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值