1. 概述

在这个简短教程中,我们将了解如何在 Java 中验证IPv4地址

2. IPv4验证规则

有效的IPv4地址形式为 “x.x.x.x”,其中每个 x 是0到255范围内的数字,不包含开头的零,并由点分隔。

以下是一些有效IPv4地址示例:

  • 192.168.0.1
  • 10.0.0.255
  • 255.255.255.255

而一些无效的地址包括:

  • 192.168.0.256(数值大于255)
  • 192.168.0(只有3个八位段)
  • .192.168.0.1(以“.”开头)
  • 192.168.0.01(有开头的零)

3. 使用Apache Commons Validator

我们可以使用来自Apache Commons Validator库的InetAddressValidator类来验证我们的IPv4或IPv6地址。

首先,在pom.xml文件中添加依赖:

<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.7</version>
</dependency>

然后,只需使用InetAddressValidator对象的isValid()方法:

InetAddressValidator validator = InetAddressValidator.getInstance();
validator.isValid("127.0.0.1");

4. 使用Guava

另一种选择是使用来自Guava库的InetAddresses类实现相同目标:

InetAddresses.isInetAddress("127.0.0.1");

5. 使用正则表达式

最后,我们还可以使用正则表达式

String regex = "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(ip);
matcher.matches();

这个正则表达式中,*((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b)*匹配IPv4地址的四个八位段。每个八位段的匹配规则如下:

  • 25[0-5] - 匹配250到255之间的数字。
  • (2[0-4]|1\\d|[1-9]) - 匹配200-249、100-199和1-9之间的数字。
  • \\d - 匹配任何数字(0-9)。
  • \\.? - 匹配可选的点(.)字符。
  • \\b - 表示单词边界。

因此,这个正则表达式匹配IPv4地址。

6. 总结

总之,我们学习了在 Java 中验证IPv4地址的不同方法

本文示例代码可以在GitHub上找到。