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
, whereA
is a letter and1
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 !!
Comments