我使用正则表达式:
^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|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)([2-9]|[1-9][0-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2})$
正确验证英国邮政编码,通常(有例外)可以是以下任何一种格式:
A9 9AA
A99 9AA
AA9 9AA
AA99 9AA
A9A 9AA
AA9A 9AA
我想更改我的表达式,以便它允许正确的整个邮政编码(就像现在一样)或只允许邮政编码的正确“第一部分”..所以使用上面的例子之一:
AA9将是有效格式
AA9 9AA将是有效格式
AA无效
AA9 9无效
谢谢你,
吉姆
答案 0 :(得分:1)
看起来有更多可用的优化,但这取决于代码的复杂性......
这是对你的一点修改:
^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|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)([2-9]|[1-9][0-9])|EC[1-9][0-9])( [0-9][ABD-HJLNP-UW-Z]{2})?)$
正如你所看到的,?使最后一部分可选
[0-9][ABD-HJLNP-UW-Z]{2})$
( [0-9][ABD-HJLNP-UW-Z]{2})?)$
修改aadravid更简单的版本(如果你想要一个不太严格的版本)
'/\\A\\b[A-Z]{1,2}[0-9][A-Z0-9]?( [0-9][ABD-HJLNP-UW-Z]{2})?\\b\\z/i'
答案 1 :(得分:0)
我在cakephp框架中使用它并为我工作......
'/\\A\\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\\b\\z/i'