2010-08-12 90 views
3

我想验证英国邮政编码的字段。什么正则表达式可以用来验证这个领域? (([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$似乎确实有效,因为它有例外GIR 0AA使用正则表达式验证英国邮政编码

所以,请帮我写一个表达式没有任何异常

+0

您的意思是**邮政编码**? – Rob 2010-08-12 05:52:26

+0

这突然变得更有意义,如果它。带有字母的PIN似乎不太可能(至少如果他们没有任何进一步的信息)。 – Quentin 2010-08-12 05:59:50

+0

尽管...尝试验证邮政编码没有意义,因为邮政编码系统对其中的普通规则有例外。 – Quentin 2010-08-12 06:01:25

回答

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

如果你的意思邮编,wikipedia has a section on validation。它推荐的一个正则表达式是:

((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被列为例外,对自己的日常 表达,因为它是一个有效的英国 post code的是什么esentially 历史原因(搜索它在 维基百科的文章,它给 特别提到)。

没有平凡的正则表达式,你可以写验证一个英国邮政编码,因为没有担保,例如,GU78 2AB有效(GU78向外区域可能只包含2A 一个,但不2A B),而GU77 2AB可能被认为是有效的。

您可以使用正则表达式来验证表格和结构的一段文字,以确定它是否符合要求被视为邮政编码的要求。广义上讲,我认为以下正则表达式可以满足以下要求:

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

谢谢你的回应,这真的帮了我很多,我认为这是个例外,现在我明白了 – 2010-08-16 05:13:44

相关问题