[Java]正则表达式判断 IP 地址是否是内网 IP

2021-10-24 3386点热度 0人点赞 0条评论

利用正则表达式判断给定IP地址是否是内网IP。

利用InetAddress全面判断给定IP是否是内网IP(支持IPv6) 详见https://blog.terrynow.com/2021/10/25/java-inetaddress-check-given-ip-is-local-address-support-ipv6/

说明下,内网IP一般是这么几个地址段:

10.0.0.0/8 10.0.0.0--10.255.255.255
172.16.0.0/12 172.16.0.0--172.31.255.255
192.168.0.0/16 192.168.0.0--192.168.255.255

127.0.0.1/8 127.0.0.1-- 127.255.255.255

localhost

所以正则表达式是: ^(127\.\d{1,3}\.\d{1,3}\.\d{1,3})|(localhost)|(10\.\d{1,3}\.\d{1,3}\.\d{1,3})|(172\.((1[6-9])|(2\d)|(3[01]))\.\d{1,3}\.\d{1,3})|(192\.168\.\d{1,3}\.\d{1,3})$

Java判断内网IP示例:

public static boolean isInnerIp(String ip) {
    Pattern pattern = Pattern.compile("^(127\\.0\\.0\\.\\d{1,3})|(localhost)|(10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})|(172\\.((1[6-9])|(2\\d)|(3[01]))\\.\\d{1,3}\\.\\d{1,3})|(192\\.168\\.\\d{1,3}\\.\\d{1,3})$");
    return pattern.matcher(ip).matches();
}

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论