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

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

原文: https://howtodoinjava.com/regex/uk-postcode-validation/

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

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}$

要检查英国邮政编码上的验证规则,请遵循此维基百科页面。

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

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

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

学习愉快!