function validInteger(theNumber){
var anyNonDigits = new RegExp('\D','g');
if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
return true;
}else{
return false;
}
}
上面是我编写的用于验证输入的函数。我想要所有正整数。我面临的问题是使用RegExp对象。这似乎应该是超级简单的,但由于某种原因,它不起作用。
例如,如果我通过'f5',我就会成真,但如果我通过'5f',我就会变错。传递负数时我也遇到了问题。即使我在将变量传递给RegExp之前对变量进行了字符串化,-3也不会被捕获。我可以通过在if语句中添加“&&parseInt(theNumber)>0
”来解决这个问题,但我觉得RegExp也应该抓住它。提前谢谢!
答案 0 :(得分:11)
简单地:
function validInteger(theNumber){
return theNumber.match(/^\d+$/) && parseInt(theNumber) > 0;
}
或仅使用regex
更简单,只有@Eric建议:
return /^[0-9]\d*$/.test(theNumber);
<强>更新强>
An excellent cheat sheet. 该链接在5年后死亡,抱歉。
答案 1 :(得分:1)
如果可以,请不要使用RegExp,您可以:
function validInteger(theNumber){
var number = +theNumber;
return number > -1 && number % 1 === 0;
}
假设您将0视为正整数,并且您不希望区分+0和-0。
请注意,此函数将接受可以在Number中转换的theNumber
的任何值,因此不仅仅是“string”,当然也可以传递Number。
答案 2 :(得分:0)
简单!
function validate(num){
return (num | 0) > 0;
};
此函数仅对正整数返回“true”。