你如何检查给定的 IP 是否是内部的,或者不是只使用 javascript?
例如,如果您的 IP 为 192.168.1.1,则脚本应对此进行验证,并在这是内部或外部 IP 时发出警报。
你如何检查给定的 IP 是否是内部的,或者不是只使用 javascript?
例如,如果您的 IP 为 192.168.1.1,则脚本应对此进行验证,并在这是内部或外部 IP 时发出警报。
如果您的意思是私有,请确保它在以下范围之一:
私有 IP 地址范围
可用 IP 的范围和数量如下:
10.0.0.0 - 10.255.255.255 地址:16,777,216
172.16.0.0 - 172.31.255.255 地址:1,048,576
192.168.0.0 - 192.168.255.255 地址:65,536
像这样的功能应该有帮助:
function isPrivateIP(ip) {
var parts = ip.split('.');
return parts[0] === '10' ||
(parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) ||
(parts[0] === '192' && parts[1] === '168');
}
您可以使用ipaddr.js
库并检查它是否返回"private"
:
const ipaddrJs = require('ipaddr.js');
ipaddrJs.parse('192.168.5.1').range()
> 'private'
https://github.com/whitequark/ipaddr.js/blob/master/lib/ipaddr.js
如果您使用 Node.js,请看这里:https ://www.npmjs.com/package/ipaddr.js
内部 IP 如下:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
为他们编写正确的正则表达式。
/10\.\d+\.\d+\.\d+/
/192\.168\.\d+\.\d+/
我留给你找出 172.xxx 范围的正确正则表达式。
试试这个!
var id = "10.10.10.10";
if (/^(10)\.(.*)\.(.*)\.(.*)$/.test(id)){
//10.x.x.x
}else if (/^(172)\.(1[6-9]|2[0-9]|3[0-1])\.(.*)\.(.*)$/.test(id)){
//172.16.x.x - 172.31.255.255
}else if (/^(192)\.(168)\.(.*)\.(.*)$/.test(id)){
//192.168.x.x
}else {
//else
}