英国邮政编码正则表达式

时间:2013-07-24 06:35:38

标签: regex

可能重复 Regex to validate UK Post Codes

我需要一个Regex语法,它接受帖子代码,如下面的格式

CR03JP
cr03jp
CR0 3JP
cr0 3jp

我现在拥有的是

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

接受CR0 3JP但拒绝cro3jp CR03JP

我也尝试过以下

/((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))/i

如果已经回答,请指出链接

2 个答案:

答案 0 :(得分:2)

问题是中间需要1或2个空格

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

将其更改为{0,2},它也会接受没有空格的Postcodes。请参阅Limiting Repetition

对于不区分大小写的匹配,还需要i修饰符,就像您在第二个正则表达式中使用它一样。

答案 1 :(得分:0)

使用此正则表达式

^ ?(([BEGLMNSWbeglmnsw][0-9][0-9]?)|(([A-PR-UWYZa-pr-uwyz][A-HK-Ya-hk-y][0-9][0-9]?)|(([ENWenw][0-9][A-HJKSTUWa-hjkstuw])|([ENWenw][A-HK-Ya-hk-y][0-9][ABEHMNPRVWXYabehmnprvwxy])))) ?[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}$