Javascript 如何检查给定的IP是否为内部IP
如何检查给定的IP是否为内部IP,是否仅使用javascriptJavascript 如何检查给定的IP是否为内部IP,javascript,Javascript,如何检查给定的IP是否为内部IP,是否仅使用javascript 例如,如果您的IP为192.168.1.1,脚本应对此进行验证,并在这是内部或外部IP时发出警报。如果您的意思是私有,请确保它位于以下范围之一: 专用IP地址范围 可用IP的范围和数量如下所示: 10.0.0.0-10.255.255.255地址:16777216 172.16.0.0-172.31.255.255地址:1048576 192.168.0.0-192.168.255.255地址:65536 这样的功能应该有帮助:
例如,如果您的IP为192.168.1.1,脚本应对此进行验证,并在这是内部或外部IP时发出警报。如果您的意思是私有,请确保它位于以下范围之一: 专用IP地址范围 可用IP的范围和数量如下所示: 10.0.0.0-10.255.255.255地址:16777216 172.16.0.0-172.31.255.255地址:1048576 192.168.0.0-192.168.255.255地址:65536 这样的功能应该有帮助:
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');
}
功能isPrivateIP(ip){
变量部分=ip.分割('.');
返回零件[0]=“10”|
(第[0]部分==='172'&&(第[1],10]部分)>=16&&parseInt(第[1],10]部分)内部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范围的正确正则表达式。您可以使用ipaddr.js
库并检查它是否返回“private”
:
如果您使用Node.js,请看这里:试试这个
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
}
您使用的“internal”定义是什么?您的意思是吗?如果是这样,只需拆分字符串并检查范围就可以了。您是只需要处理IPv4,还是也需要处理IPv6?对于“192.168.1.1”,此测试失败,缺少另一个parseInt()在上次检查中。我一直在搜索类似的东西。我很高兴你分享了这个答案。
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
}