使用正则表达式验证输入中是否包含任何非数字

Fra*_*k B 6 javascript regex validation integer expression

function validInteger(theNumber){
    var anyNonDigits = new  RegExp('\D','g');
    if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
        return true;
    }else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

以上是我为验证一些输入而编写的函数.我想要所有正整数.我面临的问题是使用RegExp对象.这似乎应该是超级简单的,但由于某种原因,它不起作用.

例如,如果我通过'f5',我会得到真的,但如果我通过'5f',我就会变错.传递负数时我也遇到了问题.即使我在将变量传递给RegExp之前对变量进行了字符串化,-3也不会被捕获.我可以通过&&parseInt(theNumber)>0在if语句中添加' ' 来解决这个问题,但我觉得RegExp也应该抓住它.提前致谢!

gdo*_*ica 11

只是:

function validInteger(theNumber){    
    return theNumber.match(/^\d+$/) && parseInt(theNumber) > 0;
}
Run Code Online (Sandbox Code Playgroud)

现场演示

或者更简单,regex只有@Eric的建议:

return /^[0-9]\d*$/.test(theNumber);
Run Code Online (Sandbox Code Playgroud)

现场演示

更新:

一个优秀的备忘单.该链接在5年后死亡,对不起.