一、原理
子网掩码的合法性简单来讲也就是子网掩码就类似这样一串数字,前面一段是连续的1,类似“111111111”,后面一段是连续的0,类似“00000”,这样合法的样子是“11111111000000000”,总共是32位。
一个合法的子网掩码要满足如下条件:
1、是合法的IP地址
2、二进制码要相邻,即形如111...11000...0的形式
3、与IP地址对应,A、B、C、D各类IP地址都有对应的掩码范围(以后再讨论)
二、实现方法
1、判断方法
根据以上的原理,可以用下面的方法进行子网掩码合法性进行判断:查找子网掩码字符串中的子串“01”,若查不到子网掩码就是合法的,否则是不合法的
2、JavaScript代码实现
<html>
<head>
<title>子网掩码验证</title>
</head>
<body>
<center>
<h1>子网掩码验证</h1>
<input type="text" name="mask" id="mask" value=""/>
<input type="button" name="mytest" id="mytest" value="check_value" onClick="test()"/>
</center>
<script>
function _checkIput_fomartIP(ip)
{
return (ip+256).toString(2).substring(1); //格式化输出(补零)
}
function validateMask(MaskStr)
{
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) || (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;
}
function test()
{
var MaskStr = document.getElementById("mask").value
if(validateMask(MaskStr))
{
var str = "合法!"
}
else
{
var str = "非法!"
}
alert("子网掩码为: "+ MaskStr + " 验证结果:" + str);
}
</script>
</body>
</html>
在实际工作当中,还会有其它方法,比如正则表达式等。
子网掩码的合法性简单来讲也就是子网掩码就类似这样一串数字,前面一段是连续的1,类似“111111111”,后面一段是连续的0,类似“00000”,这样合法的样子是“11111111000000000”,总共是32位。
一个合法的子网掩码要满足如下条件:
1、是合法的IP地址
2、二进制码要相邻,即形如111...11000...0的形式
3、与IP地址对应,A、B、C、D各类IP地址都有对应的掩码范围(以后再讨论)
二、实现方法
1、判断方法
根据以上的原理,可以用下面的方法进行子网掩码合法性进行判断:查找子网掩码字符串中的子串“01”,若查不到子网掩码就是合法的,否则是不合法的
2、JavaScript代码实现
<html>
<head>
<title>子网掩码验证</title>
</head>
<body>
<center>
<h1>子网掩码验证</h1>
<input type="text" name="mask" id="mask" value=""/>
<input type="button" name="mytest" id="mytest" value="check_value" onClick="test()"/>
</center>
<script>
function _checkIput_fomartIP(ip)
{
return (ip+256).toString(2).substring(1); //格式化输出(补零)
}
function validateMask(MaskStr)
{
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) || (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;
}
function test()
{
var MaskStr = document.getElementById("mask").value
if(validateMask(MaskStr))
{
var str = "合法!"
}
else
{
var str = "非法!"
}
alert("子网掩码为: "+ MaskStr + " 验证结果:" + str);
}
</script>
</body>
</html>
在实际工作当中,还会有其它方法,比如正则表达式等。