java代码如何判断一个IP是IPv4还是IPv6呢?

乔欣 Java经验 发布时间:2023-02-10 22:20:02 阅读数:8948 1
下文笔者讲述使用java代码判断IPV4还是IPV6的方法分享,如下所示

检测IP地址是IPV4还是IPV6

实现思路:
    使用正则表达式即可判断IPV4还是IPV6
例:检测IP地址是IPV4还是IPV6的示例
 
/** 标准IPv4地址的正则表达式 */
public static final Pattern IPV4_REGEX =
		Pattern.compile(
				"^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
/** 无全0块,标准IPv6地址的正则表达式 */
public static final Pattern IPV6_STD_REGEX =
		Pattern.compile(
				"^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
/** 压缩正则表达式 */
public static final Pattern IPV6_COMPRESS_REGEX =
		Pattern.compile(
				"^(([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4})*)?)::((([0-9A-Fa-f]{1,4}:)*[0-9A-Fa-f]{1,4})?)$");

/**
 * 使用以上的IPV4检测方法
 */
public static boolean isIpv4(String ipv4) {
	return GlobalConst.IPV4_REGEX.matcher(ipv4).matches();
}

/**
 * 使用以上的IPV6检测方法
 */
public static boolean isIpv6(String ipv6) {
	// 8*4 位数字,加上七个: ipv6地址长度不可能超过39位
	if (ipv6.length() > GlobalConst.NUM_39) {
		return false;
	}
	return GlobalConst.IPV6_STD_REGEX.matcher(ipv6).matches()
			|| GlobalConst.IPV6_COMPRESS_REGEX.matcher(ipv6).matches();
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16760389235733.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者