1. Overview
In this short tutorial, we'll see how to validate IPv4 addresses in Java.
2. IPv4 Validation Rules
Our valid IPv4 address is in the form “x.x.x.x”, where each x is a number in the range 0 <= x <= 255, does not have leading zeros, and is separated by a dot.
Here are some valid IPv4 addresses:
- 192.168.0.1
- 10.0.0.255
- 255.255.255.255
And some invalid ones:
- 192.168.0.256 (values above 255)
- 192.168.0 (have only 3 octets)
- .192.168.0.1 (starts with a “.”)
- 192.168.0.01 (have leading zero)
3. Use Apache Commons Validator
We can use the InetAddressValidator class from the Apache Commons Validator library to validate our IPv4 or IPv6 address.
Let's add a dependency to our pom.xml file:
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.7</version>
</dependency>
Then, we just need to use the isValid() method of an InetAddressValidator object:
InetAddressValidator validator = InetAddressValidator.getInstance();
validator.isValid("127.0.0.1");
4. Use Guava
Alternatively, we can use the InetAddresses class from the Guava library to achieve the same goal:
InetAddresses.isInetAddress("127.0.0.1");
5. Use Regex
Finally, we can also use Regex:
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();
In this regular expression, ((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b) is a group that is repeated four times to match the four octets in an IPv4 address. The following matches each octet:
- 25[0-5] – This matches a number between 250 and 255.
- (2[0-4]|1\\d|[1-9]) – This matches a number between 200 – 249, 100 – 199, and 1 – 9.
- \\d – This matches any digit (0-9).
- \\.? – This matches an optional dot(.) character.
- \\b – This is a word boundary.
So, this regex matches IPv4 addresses.
6. Conclusion
In summary, we've learned different ways to validate IPv4 addresses in Java.
The example code from this article can be found over on GitHub.
res – REST with Spring (eBook) (everywhere)