Regex 伦敦邮政编码正则表达式验证
我使用下面的正则表达式语法来验证RSForm中的英国邮政编码!赞成者: ^(((([a-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-pr------------------------PRUYZ-UUUYYYUUUUYYYYYYYYZA-pr-UUUYYYZZZA-UUYZA-UUYZA------pr----pr-pr-pr---pr-------------------pr-------pr----------------------------pr-------------UUUUUUUUUUUUUUUUYZ---------)$ 验证工作正常,但我只需要允许伦敦境内的邮政编码 以下是允许使用的邮政编码: WC、EC、E1-E20、N1-N22、NW1-NW11、SE1-SE28、SW1-SW20、W1-14、HA0-9、EN1-8Regex 伦敦邮政编码正则表达式验证,regex,validation,Regex,Validation,我使用下面的正则表达式语法来验证RSForm中的英国邮政编码!赞成者: ^(((([a-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-UUYZA-pr-pr------------------------PRUYZ-UUUYYYUUUUYYYYYYYYZA-pr-UUUYYYZZZA-UUYZA-UUYZA------pr----pr-pr-pr---pr-------------------pr-------pr-------------------------
是否有只验证伦敦邮政编码的正则表达式,如果没有,我如何在此之后运行单独的验证并检查邮政编码是否为上述之一。这应该只匹配您的匹配代码,假设它们是一个独立的字符串-否则您可能希望使用word boundries
\b
而不是锚定^$
。我不认为有太多可能的优化,只是非常严格地匹配所有可能的代码:
^(?:[WE]C|(?:E|SW)(?:[1-9]|1[0-9]|[12]0)|N(?:[1-9]|1[0-9]|2[0-2])|NW(?:[1-9]|1[01])|SE(?:[1-9]|1[0-9]|2[0-8])|W(?:[1-9]|1[0-4])|HA[0-9]|EN[1-8])$
下面是一个带有正面匹配和一些负面示例的演示:
然而,在阅读了更多关于这个主题的文章之后,这篇文章可能比你最初的文章要深刻得多。我找到了这个带有伦敦邮政编码的网站,并制定了一个解决方案,该解决方案限制了特定于伦敦的前3或4位数字,然后使用了初始邮政编码regex中的最后一部分:
(?i)^((?:EC(?:[1234][AMNPRV]|[124]Y)|WC(?:[12][ABEHNR]|1[VX])|(?:E|SW)(?:[0-9]|1[0-9]|[12]0)|N(?:[1-9]|1[0-9]|2[0-2])|NW(?:[1-9]|1[01])|SE(?:[1-9]|1[0-9]|2[0-8])|W(?:[1-9]|1[0-4])|HA[0-9]|EN[1-8]|E1W) {0,}[0-9][ABD-HJLNP-UW-Z]{2})$
还有一个演示:
无法匹配这些情况:
E1-E20、N1-N22、NW1-NW11、SE1-SE28、SW1-SW20、W1-14、HA0-9、EN1-8
@noob ImhoE1-E20
表示E1
,E2
,E3
<代码>E20等等,你可以在这里看到:哦!我不知道。我只是遵守OP的规范。谢谢你让我知道。我已经尝试了第二个正则表达式,它似乎做了验证,但它不允许以小写输入邮政编码。例如,它接受E1 2YQ,但不接受E1 2YQ。理想的做法是验证以大写和小写形式输入的邮政编码,以及是否有空格。同样,它也不适用于E1W 2YQ。@Sami如果小写邮政编码实际上被认为是有效的(这在您的问题和我找到的任何进一步信息中都不清楚),您可以使用不区分大小写的修饰符(i)运行正则表达式