使用正则表达式验证英国邮政编码

3

我希望验证一个包含英国邮政编码的字段。用什么正则表达式可以验证这个字段?(([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$ 这个表达式看起来是有效的,因为它有一个例外GIR 0AA

所以,请帮我写一个没有任何例外的表达式。


如果这样做,这突然变得更有意义了。带字母的PIN码似乎有点不太可能(至少如果它们没有任何进一步的信息)。 - Quentin
尝试在没有异常情况下验证邮政编码是没有意义的...因为邮政编码系统中有一个例外规则。 - Quentin
@David,尝试使用正则表达式验证邮政编码并不是很有意义,因为有太多的注意事项。在咨询PAF之前,可以使用它进行第一次尝试。 - Rob
3个回答

3
如果你指的是邮政编码,维基百科有一节关于验证。其中建议使用的一个正则表达式是:
((A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|([E|N|NW|SE|SW|W]1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|[SW|W]([1-9][0-9]|[2-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2}

这个的优点是可以捕捉到一些无效的区域和地区。

1

附注: GIR 0AA 因历史原因是英国有效的邮政编码,因此在您的正则表达式中被列为例外情况(在维基百科文章中搜索它,它被特别提到)。

没有简单的正则表达式可以用来验证英国邮政编码,因为不能确定例如 GU78 2AB 是否有效(GU78 外部区域可能只包含 2AA,但不包括 2AB),而 GU77 2AB 可能会被认为是有效的。

您可以使用正则表达式来验证文本的格式和结构,以确定它是否符合被视为邮政编码的要求。我相信,总体上,以下正则表达式将满足这一要求:

(([A-Z]{1,2}[0-9]{1,2})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$

谢谢您的回复,这真的帮了我很多。我以为那是一个例外,现在我明白它的意思了。 - ansar hussain

0
^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接