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

> 原文： [https://howtodoinjava.com/regex/canada-postal-code-validation/](https://howtodoinjava.com/regex/canada-postal-code-validation/)

在此 [Java 正则表达式教程](https://howtodoinjava.com/java-regular-expression-tutorials/)中，我们将学习使用**正则表达式来验证加拿大的邮政编码**。 您也可以修改正则表达式以使其适合任何其他格式。

## 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\. 加拿大邮政编码验证示例

```java
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

```

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

学习愉快！