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上找到。