我有一些困难,让一个regex运行这些案件-对不起,我是非常新的regex,并没有弄清楚。
模式如下:
因此,如果与字母相结合,邮政编码必须完全填充在范围内给定的最大长度,如{2,5}。
我试过这个,但不像我需要的那样工作:
/^([0-9]{2,5})(\s+[^a-zA-Z]{2,})?$/
发布于 2013-09-01 11:03:45
这样做是可行的:
/^([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ä-üß],但取决于所使用的语言,可以支持更好的选项。
测试 http://jsfiddle.net/zd4Qm/4/
发布于 2013-09-01 10:58:15
有时,正则表达式并不是唯一的答案。
if (there are letters in the string) {
search for /\d{5}/
} else {
search for /\d{2,5}/
}https://stackoverflow.com/questions/18557708
复制相似问题