Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

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.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.