限制为所有字符还是所有数字?
Restrict to either all characters or all numbers?
假设我想限制用户输入郊区或邮政编码,但不能同时输入两者,
我希望 'suburb' 通过,因为它全是字母字符,我希望“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
当它贯穿表达式时。
您可以使用此正则表达式来匹配输入中的字母或数字:
var resultA = /^([A-Za-z]+|[0-9]+)$/.test(string);
当开发人员询问如何使他们的正则表达式过于复杂时,我通常建议他们退后一步,只编写一些代码,并为他们可以很好地形式化的部分加入正则表达式。
您询问了如何确定一个字符串是完全是字母字符还是完全是数字。
检测所有字母字符的正则表达式是
/^[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
不要简化。当正则表达式更短并匹配更简单的模式时,它们更容易阅读和推理。使用更多的小正则表达式,而不是更少的更长的正则表达式,即使代码可以变得更短。未来你会感谢过去的你让代码更容易理解。
假设我想限制用户输入郊区或邮政编码,但不能同时输入两者,
我希望 'suburb' 通过,因为它全是字母字符,我希望“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
当它贯穿表达式时。
您可以使用此正则表达式来匹配输入中的字母或数字:
var resultA = /^([A-Za-z]+|[0-9]+)$/.test(string);
当开发人员询问如何使他们的正则表达式过于复杂时,我通常建议他们退后一步,只编写一些代码,并为他们可以很好地形式化的部分加入正则表达式。
您询问了如何确定一个字符串是完全是字母字符还是完全是数字。
检测所有字母字符的正则表达式是
/^[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
不要简化。当正则表达式更短并匹配更简单的模式时,它们更容易阅读和推理。使用更多的小正则表达式,而不是更少的更长的正则表达式,即使代码可以变得更短。未来你会感谢过去的你让代码更容易理解。