您的位置:首页 > 其它

IP地址和子网掩码的验证

2010-03-12 15:43 302 查看
/**

* 函数名: validateMask

* 函数功能: 验证子网掩码的合法性

* 函数作者: 236F(fuwei236#gmail.com)

* 传入参数: MaskStr:点分十进制的子网掩码(如:255.255.255.192)

* 主调函数:

* 调用函数: _checkIput_fomartIP(ip)

* 返回值: true: MaskStr为合法子网掩码

* false: MaskStr为非法子网掩码

**/

function validateMask(MaskStr)

{

/* 有效性校验 */

var IPPattern = /^/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}$/

if(!IPPattern.test(MaskStr))return false;

/* 检查域值 */

var IPArray = MaskStr.split(".");

var ip1 = parseInt(IPArray[0]);

var ip2 = parseInt(IPArray[1]);

var ip3 = parseInt(IPArray[2]);

var ip4 = parseInt(IPArray[3]);

if ( ip1<0 || ip1>255 /* 每个域值范围0-255 */

|| ip2<0 || ip2>255

|| ip3<0 || ip3>255

|| ip4<0 || ip4>255 )

{

return false;

}

/* 检查二进制值是否合法 */

//拼接二进制字符串

var ip_binary = _checkIput_fomartIP(ip1) + _checkIput_fomartIP(ip2) + _checkIput_fomartIP(ip3) + _checkIput_fomartIP(ip4);

if(-1 != ip_binary.indexOf("01"))return false;

return true;

}

/**

* 函数名: _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>

<script src="validateMask.js"></script>

<script>

function test(MaskStr)

{

alert("IP地址为: "+ MaskStr + " 验证结果:" + validateMask(MaskStr));

}

</script>

</head>

<body>

<center>

<h1>子网掩码验证

</h1>

<input type="text" name="mask" id="mask" value="">

<input type="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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: