# Java 正则表达式 – 英国邮政编码验证

> 原文： [https://howtodoinjava.com/regex/uk-postcode-validation/](https://howtodoinjava.com/regex/uk-postcode-validation/)

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

## 1\. 什么是有效的英国邮政编码

英国的邮递区号（*或邮递区号*）由 5 到 7 个字母数字字符组成，中间用空格隔开。 这两个部分是外向代码和内向代码。

外部代码包括邮政编码区域和邮政编码区域。 内向代码包括邮政编码扇区和邮政编码单元。

邮政编码的示例包括“`SW1W 0NY`”，“`PO16 7GZ`”，“`GU16 7HF`”或“`L1 8JQ`”。

覆盖哪些字符可以出现在特定位置的规则并不复杂，并且充满了异常情况。 因此，此处给出的正则表达式仅遵循基本规则。

> **正则表达式**：`^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$`

要检查英国邮政编码上的验证规则，请遵循此[**维基百科**](https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom#Validation "uk postal code validations")页面。

## 2\. 英国邮政编码验证示例

```java
List<String> zips = new ArrayList<String>();

//Valid ZIP codes
zips.add("SW1W 0NY");  
zips.add("PO16 7GZ");  
zips.add("GU16 7HF");  
zips.add("L1 8JQ");  

//Invalid ZIP codes
zips.add("Z1A 0B1");
zips.add("A1A 0B11");

String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";

Pattern pattern = Pattern.compile(regex);

for (String zip : zips)
{
	Matcher matcher = pattern.matcher(zip);
	System.out.println(matcher.matches());
}

Output:

true
true
true
true

false
false

```

随意提出与上述**英国邮政编码验证示例**有关的问题。

学习愉快！