Java 正则表达式 – 加拿大邮政编码验证

Java 正则表达式 – 加拿大邮政编码验证

原文: https://howtodoinjava.com/regex/canada-postal-code-validation/

在此 Java 正则表达式教程中,我们将学习使用正则表达式来验证加拿大的邮政编码。 您也可以修改正则表达式以使其适合任何其他格式。

1. 什么是有效的加拿大邮政编码

加拿大邮政编码是一个六位字符的字符串,构成加拿大邮政地址的一部分。

有效的加拿大邮政编码为:

  • 格式为A1A 1A1,其中 A 是字母,1 是数字。
  • 用空格分隔第三个和第四个字符。
  • 不要包含字母 D,F,I,O,Q 或 U。
  • 第一个位置不使用字母 W 或 Z。

正则表达式:^(?!.*[DFIOQU])[A-VXY][0-9][A-Z] ?[0-9][A-Z][0-9]$

在正则表达式之上,此正则表达式开头的负前瞻可防止在主题字符串中的任何位置出现 D,F,I,O,Q 或 U。[A-VXY]字符类进一步防止 W 或 Z 作为第一个字符。

2. 加拿大邮政编码验证示例

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());
}

Output:

true
true

false
false

那很容易,对吗? 向我提供有关如何使用正则表达式验证加拿大邮政编码的问题。

学习愉快!