2012-03-22 164 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); 
}