Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查给定的IP是否为内部IP_Javascript - Fatal编程技术网

Javascript 如何检查给定的IP是否为内部IP

Javascript 如何检查给定的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是否为内部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

这样的功能应该有帮助:

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
  }