使用Javascript进行邮政编码和国家匹配

使用Javascript进行邮政编码和国家匹配,javascript,regex,Javascript,Regex,对于这些情况,我很难让regex运行——对不起,我对regex非常陌生,无法理解 模式如下所示: 12(对) 123(对) 1234(真实) 12345(真实) 1 a。。。(错) 12 a。。。(错) 123 a。。。(错) 1234 a。。。(错) 12345米(真实) 12345缪恩(真实) 门钦123(假) mün 12345(真实) 因此,如果将邮政编码与字母组合,则必须填充该范围内给定的最大长度 比如{2,5} 我试过用这个,但它不能像我需要的那样工作: 有时,正则表达式不是唯一

对于这些情况,我很难让regex运行——对不起,我对regex非常陌生,无法理解

模式如下所示:

  • 12(对)
  • 123(对)
  • 1234(真实)
  • 12345(真实)
  • 1 a。。。(错)
  • 12 a。。。(错)
  • 123 a。。。(错)
  • 1234 a。。。(错)
  • 12345米(真实)
  • 12345缪恩(真实)
  • 门钦123(假)
  • mün 12345(真实)
因此,如果将邮政编码与字母组合,则必须填充该范围内给定的最大长度 比如
{2,5}

我试过用这个,但它不能像我需要的那样工作:


有时,正则表达式不是唯一的答案

if (there are letters in the string) {
    search for /\d{5}/
} else {
    search for /\d{2,5}/
}
这项工作:

/^([0-9]{5}\s[a-z]+)$|^([a-z]+\s[0-9]{5})$|^([0-9]{2,5})$/i
(评论后编辑)

注意OR运算符:

匹配
[0-9]{5}\s[a-z]+
[a-z]+\s[0-9]{5}
[0-9]{2,5}

您可以在单词匹配中添加任何国际字符,例如:
[a-zä-üß]
,但根据您使用的语言,可能会支持更好的选项

测试

“mün 123456789”与模式匹配,但邮政编码超过允许长度。那么“mün 12345”呢?它应该匹配,但不匹配。:)读一下我刚才为国际角色如ü添加的注释,用[a-zä-üß]替换[a-z],这并不能解决问题<代码>/^([0-9]{2,5}\s[a-zä-uß]+)$|^([0-9]+)$/i.exec(“mün 12345”)返回空值。哦,等等!我错过了一个手术病例