验证IP地址不是0.0.0.0或多播地址

And*_*rew 3 javascript

使用JavaScript如何验证IP地址"xxxx"是有效的IPV4单播地址,例如不是0.0.0.0或多播(224.0.0.0到224.0.0.255,224.0.1.0到238.255.255.255,239.0.0.0到239.255.255.255) )?

Ant*_*nes 6

首先你需要把它变成一个数字,使用这个函数: -

function IPToNumber(s)
{
    var arr = s.split(".");
    var n = 0
    for (var i = 0; i < 4; i++)
    {
        n = n * 256
        n += parseInt(arr[i],10)

    }
    return n;
}
Run Code Online (Sandbox Code Playgroud)

看看你的规格,虽然你似乎列出了一系列范围,但这些范围看起来与我相邻,可以简化为(224.0.0.0到239.255.255.255).因此你可以测试: -

var min = IPToNumber("224.0.0.0");
var max = IPToNumber("239.255.255.255");

var ipNum = IPToNumber(sTestIP);

var isValid = (ipNum != 0 && (ipNum < min || ipNum > max))
Run Code Online (Sandbox Code Playgroud)

请注意,如果不了解目标子网,则无法判断该地址是该子网的网络地址还是广播地址.

  • 小心这样的事情,这是有效的:70.16.18.015.您的parseInt调用可能不会将所有内容视为十进制. (4认同)