ZIP code regex Java
ZIP code (US postal code) regular expression can be used to verify if a given string contains a valid ZIP code or extract ZIP code from a string. Supports both 5-digit and 9-digit (ZIP+4) formats.
ZIP code regex
A regular expression to test a string against ZIP code format:
Pattern.compile("^[0-9]{5}(?:-[0-9]{4})?$")
Enter a text in the input above to see the result
Example code in Java:
import java.util.regex.Pattern;
import java.util.regex.MatchResult;
import java.util.Arrays;
public class Main {
public static void main(String []args) {
// Validate ZIP code
boolean isMatch = Pattern.compile("^[0-9]{5}(?:-[0-9]{4})?$")
.matcher("80001")
.find();
System.out.println(isMatch); // prints true
// Extract ZIP code from a string
String[] matches = Pattern.compile("[0-9]{5}(?:-[0-9]{4})?")
.matcher("My zip code is 80001")
.results()
.map(MatchResult::group)
.toArray(String[]::new);
System.out.println(Arrays.toString(matches)); // prints [80001]
}
}
Notes on ZIP code validation and extraction
This ZIP code regex has several limitations:
- It only works for US ZIP codes. If you need to support other countries, you might need to have a separate regular expression for each one of them and execute it based on the country provided.
- It can not guarantee that ZIP code actually exists. For instance, 99999 is a correct format, but this ZIP code does not exist.
- The extraction method can generate false-positive extraction if a string contains multiple numbers.