4

我在为这些情况下运行正则表达式时遇到了一些困难 - 抱歉,我对正则表达式很陌生,无法弄清楚。

该模式如下所示:

  • 12(真实)
  • 123(真实)
  • 1234(真)
  • 12345(真)
  • 1 a...(错误)
  • 12 一...(假)
  • 123 一...(假)
  • 第1234章……(假)
  • 12345 米(真实)
  • 12345 米(真)
  • 慕尼黑 123(假)
  • mün 12345(真)

因此,如果与字母组合,邮政编码必须填充范围内给定的最大长度,如{2,5}.

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

/^([0-9]{2,5})(\s+[^a-zA-Z]{2,})?$/

4

2 回答 2

3

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

if (there are letters in the string) {
    search for /\d{5}/
} else {
    search for /\d{2,5}/
}
于 2013-09-01T10:58:15.373 回答
2

这有效:

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

注意 OR 运算符:

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

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

测试http://jsfiddle.net/zd4Qm/4/

于 2013-09-01T11:03:45.783 回答