我希望验证一个包含英国邮政编码的字段。用什么正则表达式可以验证这个字段?(([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$
这个表达式看起来是有效的,因为它有一个例外GIR 0AA。
所以,请帮我写一个没有任何例外的表达式。
我希望验证一个包含英国邮政编码的字段。用什么正则表达式可以验证这个字段?(([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$
这个表达式看起来是有效的,因为它有一个例外GIR 0AA。
所以,请帮我写一个没有任何例外的表达式。
((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}
附注:
GIR 0AA
因历史原因是英国有效的邮政编码,因此在您的正则表达式中被列为例外情况(在维基百科文章中搜索它,它被特别提到)。
没有简单的正则表达式可以用来验证英国邮政编码,因为不能确定例如 GU78 2AB 是否有效(GU78 外部区域可能只包含 2AA,但不包括 2AB),而 GU77 2AB 可能会被认为是有效的。
您可以使用正则表达式来验证文本的格式和结构,以确定它是否符合被视为邮政编码的要求。我相信,总体上,以下正则表达式将满足这一要求:
(([A-Z]{1,2}[0-9]{1,2})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$
^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$