function validInteger(theNumber){
var anyNonDigits = new RegExp('\D','g');
if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
return true;
}else{
return false;
}
}
上面是我编写的用于验证某些输入的函数。我想要所有正整数。我面临的问题是RegExp对象。这似乎应该 super 简单,但由于某种原因它无法正常工作。
例如,如果我通过“f5”,则为true,但如果我通过“5f”,则为false。传递负数时我也遇到问题。即使在将变量传递到RegExp之前将其字符串化,也不会捕获-3。我可以通过在if语句中添加“
&&parseInt(theNumber)>0
”来解决此问题,但是我觉得RegExp也应该捕获这一点。提前致谢! 最佳答案
只是:
function validInteger(theNumber){
return theNumber.match(/^\d+$/) && parseInt(theNumber) > 0;
}
Live DEMO
甚至仅按@Eric的建议使用
regex
更简单:return /^[0-9]\d*$/.test(theNumber);
Live DEMO
更新:
An excellent cheat sheet.链接在5年后消失了,很抱歉。