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年后消失了,很抱歉。

08-16 21:49