2012-03-22 91 views

回答

0

@ThiefMaster,这同意是一个可怕的问题,但它也是搜索Javascript IP验证时的最佳结果之一。我用inet_pton() from php.js来验证IP地址。这只是46的代码,包括注释行同时适用于IPv4和IPv6:

var address = "123.123.123.123"; 
if (inet_pton(address) !== false) { 
    // Address is valid 
} 

此外,以查看是否有IP地址属于两个IP地址之间的范围是很容易的,因为你可以直接比较的二进制字符串:

var address = "123.123.123.123"; 
var range_start = "123.1.1.1"; 
var range_end = "123.255.255.255"; 

if (inet_pton(address) >= inet_pton(range_start) && 
    inet_pton(address) <= inet_pton(range_end) 
) { 
    // Address is within the given range 
} 

如果range_startrange_end来自用户的输入,你也应该确认他们是相同的版本,因为我不认为它使多大意义,否则(纠正我,如果我错了)。所以我一起鞭打这个快速功能:

function same_ip_version(ip1, ip2) { 
    var ipv4_pattern = /^(?:\d{1,3}(?:\.|$)){4}/; 
    return ipv4_pattern.test(ip1) === ipv4_pattern.test(ip2); 
}