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

时间:2010-08-12 05:38:01

标签: c# .net javascript asp.net regex

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

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

  

旁注: GIR 0AA在常规中列为例外   表达,因为它是一个有效的英国   post code对于本质上是什么   历史原因(在中寻找它)   维基百科的文章,给出了   特别提到)。

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

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

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

答案 2 :(得分:0)

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