100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java 校验ipv6_基于Java检查IPv6地址的合法性

java 校验ipv6_基于Java检查IPv6地址的合法性

时间:2022-08-11 01:44:14

相关推荐

java 校验ipv6_基于Java检查IPv6地址的合法性

这篇文章主要介绍了基于java检查IPv6地址的合法性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

由于IPv4资源即将耗尽,IPv6将要正式启用,这是大势所趋。

一些现有的服务和应用逐步要对IPv6支持,目前还处在过渡阶段。

提前了解一些IPv6的知识,还是有必要的。

如何判断一个IP地址,是否为IPv6地址呢?

以下代码是用Java实现的,用于校验IPv6地址合法性。

代码如下:

import java.text.Normalizer;

import java.text.Normalizer.Form;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class IPV6Check {

public static void main(String[] args) {

String ipv6_1 = ":db8:a583:64:c68c:d6df:600c:ee9a";

String ipv6_2 = ":db8:a583::9e42:be55:53a7";

String ipv6_3 = ":db8:a583:::9e42:be55:53a7";

String ipv6_4 = "1:2:3:4:5::192.168.254.254";

String ipv6_5 = "ABCD:910A:2222:5498:8475:1111:3900:";

String ipv6_6 = "1030::C9B4:FF12:48AA:1A2B";

String ipv6_7 = ":0:0:0:0:0:0:1";

String ipv6_8 = "::0:0:0:0:0:0:1";

String ipv6_9 = ":0:0:0:0::";

String ipv6_10= "2048:877e:31::7";

String resultLine = "\n==> ";

String splitLine = "\n----------------------------------------------------\n";

System.out.println(ipv6_1 + resultLine + isValidIpv6Addr(ipv6_1) + splitLine);

System.out.println(ipv6_2 + resultLine + isValidIpv6Addr(ipv6_2) + splitLine);

System.out.println(ipv6_3 + resultLine + isValidIpv6Addr(ipv6_3) + splitLine);

System.out.println(ipv6_4 + resultLine + isValidIpv6Addr(ipv6_4) + splitLine);

System.out.println(ipv6_5 + resultLine + isValidIpv6Addr(ipv6_5) + splitLine);

System.out.println(ipv6_6 + resultLine + isValidIpv6Addr(ipv6_6) + splitLine);

System.out.println(ipv6_7 + resultLine + isVakUflekOoyQlidIpv6Addr(ipv6_7) + splitLine);

System.out.println(ipv6_8 + resultLine + isValidIpv6Addr(ipv6_8) + splitLine);

System.out.println(ipv6_9 + resultLine + isValidIpv6Addr(ipv6_9) + splitLine);

System.out.println(ipv6_10 + resultLine + isValidIpv6Addr(ipv6_10) + splitLine);

}

/**

* 校验IPv6地址的合法性

* @param ipAddr

* @return

*/

public static boolean isValidIpv6Addr(String ipAddr) {

String regex = "(^((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4}){1}|:))"

+ "|(([0-9A-Fa-f]{1,4}:){6}((:[0-9A-Fa-f]{1,4}){1}|"

+ "((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"

+ "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"

+ "(([0-9A-Fa-f]{1,4}:){5}((:[0-9A-Fa-f]{1,4}){1,2}|"

+ ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"

+ "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"

+ "(([0-9A-Fa-f]{1,4}:){4}((:[0-9A-Fa-f]{1,4}){1,3}"

+ "|:((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})){3})|:))|(([0-9A-Fa-f]{1,4}:){3}((:[0-9A-Fa-f]{1,4}){1,4}|"

+ ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"

+ "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))|"

+ "(([0-9A-Fa-f]{1,4}:){2}((:[0-9A-Fa-f]{1,4}){1,5}|"

+ ":((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25[0-5]|2[0-4][0-9]|"

+ "[0-1][0-9][0-9]|([0-9]){1,2})){3})|:))"

+ "|(([0-9A-Fa-f]{1,4}:){1}((:[0-9A-Fa-f]{1,4}){1,6}"

+ "|:((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|"

+ "([0-9]){1,2})([.](25

运行结果如下:

:db8:a583:64:c68c:d6df:600c:ee9a

==> true

----------------------------------------------------

:db8:a583::9e42:be55:53a7

==> true

----------------------------------------------------

Invalid IPv6 address = :db8:a583:::9e42:be55:53a7

:db8:a583:::9e42:be55:53a7

==> false

----------------------------------------------------

1:2:3:4:5::192.168.254.254

==> true

----------------------------------------------------

ABCD:910A:2222:5498:8475:1111:3900:

==> true

---

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 基于Java检查IPv6地址的合法性

本文地址: /ruanjian/java/298360.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。