Javascript 伦敦邮政编码的正则表达式模式不匹配

Javascript 伦敦邮政编码的正则表达式模式不匹配,javascript,html,regex,Javascript,Html,Regex,我正在尝试为Javascript创建一个正则表达式模式来测试提供的邮政编码值,以确定它是否匹配伦敦邮政编码。从以下两个方面开始: 东、西、西北、东南或西南 E#,N#,W#(其中#为1到9,单位数字) 我的正则表达式模式是:^[nN|eE|wW][1-9]{1}{1}}{1}}}[ecEC | wcWC | nw | nw | seSE | sww]{2},出于某种原因,它似乎认为以CE开头的值匹配?当我还没有指定这个 我哪里出了问题?试试下面的方法: pattern = new RegEx

我正在尝试为Javascript创建一个正则表达式模式来测试提供的邮政编码值,以确定它是否匹配伦敦邮政编码。从以下两个方面开始:

  • 东、西、西北、东南或西南
  • E#,N#,W#(其中#为1到9,单位数字)
我的正则表达式模式是:
^[nN|eE|wW][1-9]{1}{1}}{1}}}[ecEC | wcWC | nw | nw | seSE | sww]{2}
,出于某种原因,它似乎认为以CE开头的值匹配?当我还没有指定这个


我哪里出了问题?

试试下面的方法:

pattern = new RegExp('^(?:(?:n|e|w)[1-9]|(?:ec|wc|[ns]w|se))','gi')
在线查看


在您的评论之后,我想您可能希望根据OP中的链接精确匹配所有伦敦邮政区

pattern = new RegExp('^(?:e(?:[1-9]|1[0-8]|20)|n(?:[1-9]|1\d|2[012])|w(?:[1-9]|1[0-4])|ec[1-4]|wc[12]|nw(?:[1-9]|1[01])|se(?:[1-9]|1\d|2[0-8])|sw(?:[1-9]|1\d|20)) [a-z]+(?: [a-z']+)*$','gi')
在线查看


您可能需要将反斜杠加倍。

使用
(?:…)
而不是
[…]
[ecEC]表示所有这4个字符都可以按任何顺序接受。因此,即使是行政长官也会匹配。正如上面评论中所建议的,请更改括号。将您的模式放在一些在线正则表达式调试器上,试着看看它是什么意思。@Thefourthbird
^(?:nN|eE|wW)[1-9]{1}|(?:ecEC | wcWC | nw | nw | seSE | sww){2}
在更改后似乎无效,它与任何东西都不匹配这很好,似乎匹配,但是邮政编码超过2个字符,并且正则表达式在2个字符后失败,这需要它在整个过程中都是真实的