`
yisouu
  • 浏览: 5064 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript实现子网掩码合法性验证

阅读更多
一、原理

子网掩码的合法性简单来讲也就是子网掩码就类似这样一串数字,前面一段是连续的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>
在实际工作当中,还会有其它方法,比如正则表达式等。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics