5

你如何检查给定的 IP 是否是内部的,或者不是只使用 javascript?

例如,如果您的 IP 为 192.168.1.1,则脚本应对此进行验证,并在这是内部或外部 IP 时发出警报。

4

4 回答 4

13

如果您的意思是私有,请确保它在以下范围之一:

私有 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');
}
于 2012-12-20T10:07:26.650 回答
6

您可以使用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

于 2017-11-16T12:38:43.893 回答
4

内部 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 范围的正确正则表达式。

于 2012-12-20T10:09:23.620 回答
1

试试这个!

  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
  }
于 2018-05-07T10:53:33.657 回答