Java Regex – Canada Postal Code Validation

In this Java regex tutorial, we will learn to use a regular expression to validate Canadian postal zip codes. You can modify the regex to suit it for any other format as well.

1. What is a Valid Canadian Postal Code?

A Canadian postal code is a six-character string.

A valid Canadian postcode is –

  • in the format A1A 1A1, where A is a letter and 1 is a digit.
  • a space separates the third and fourth characters.
  • do not include the letters D, F, I, O, Q or U.
  • the first position does not make use of the letters W or Z.

2. Regex for Canadian Postal Code

^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] ?[0-9][A-Z][0-9]$

  • In the above regex, the negative lookahead at the beginning of this regular expression prevents D, F, I, O, Q, or U anywhere in the subject string.
  • The <[A-VXY]> character class further prevents W or Z as the first character.

3. Example

List<String> zips = new ArrayList<String>();
       
//Valid ZIP codes
zips.add("K1A 0B1");  
zips.add("B1Z 0B9");  
 
//Invalid ZIP codes
zips.add("K1A 0D1");  
zips.add("W1A 0B1");  
zips.add("Z1A 0B1");
 
String regex = "^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] ?[0-9][A-Z][0-9]$";
 
Pattern pattern = Pattern.compile(regex);
 
for (String zip : zips)
{
    Matcher matcher = pattern.matcher(zip);
    System.out.println(matcher.matches());
}
true
true
 
false
false

That was pretty easy, right?

Happy Learning !!

Leave a Reply

1 Comment
Most Voted
Newest Oldest
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions, and frequently asked interview questions.