我想说我想限制用户输入郊区或邮政编码,但不能同时输入两者,
我想要'郊区'要传递所有字母字符,我想要' 1234'传递它的所有数字,但我无法弄清楚如何映射和正则表达式之内或之内。
这是我尝试过的。
var string = 'word';
var resultA = !(string.match(/^[a-z|0-9]+$/i));
alert(resultA);
所以我需要:
'word' => true
'1234' => true
'word word' => true,
'word 123' => false,
'word2' => false
当它贯穿表达式时。
答案 0 :(得分:3)
您可以使用此正则表达式匹配输入中的字母或数字:
var resultA = /^([A-Za-z]+|[0-9]+)$/.test(string);
答案 1 :(得分:0)
当开发人员询问如何过度复杂化他们的正则表达式时,我通常建议他们退后一步,然后编写一些代码,并为他们可以正式化的部分提供正则表达式。
您询问如何确定字符串是完全字母字符还是完全数字。
检测所有字母字符的正则表达式是
/^[a-z]*$/i
检测所有数字字符的正则表达式是
/^\d*$/
将它们组合起来就是:
function valid(str) {
return /^[a-z]*$/i.test(str) || /^\d*$/.test(str);
}
现在,如果您想将它们全部合并到一个正则表达式中,您只需使用|
正则表达式操作:
function valid(str) {
return /^[a-z]*$|^\d*$/i.test(str);
}
如果您使用分组运算符,这当然可以简化:
/^([a-z]*|\d*)$/i
不简化 。当它们更短并且匹配更简单的模式时,它更容易阅读并更容易推理正则表达式。使用更多小的正则表达式,而不是更少的正则表达式,即使代码可以缩短。未来你会感谢过去让你更容易理解代码。