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

时间:2012-06-07 16:52:08

标签: 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;
    }
}

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

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

3 个答案:

答案 0 :(得分:11)

简单地:

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

Live DEMO

或仅使用regex更简单,只有@Eric建议:

return /^[0-9]\d*$/.test(theNumber);

Live DEMO

<强>更新

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”。