繁体   English   中英

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

[英]Using a regular expression to validate whether input has any non digits in it

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也应该抓住它。 提前致谢!

只是:

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

现场演示

或者甚至更简单,正如@Eric所建议的regex

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

现场演示

更新:

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

如果没关系,请不要使用RegExp,您可以:

function validInteger(theNumber){
    var number = +theNumber;

    return number > -1 && number % 1 === 0;
}

假设您将0视为正整数,并且您不希望区分+0和-0。

请注意,此功能将接受任何值theNumber可在数转换,所以不只是“串”,你可以通过数量以及课程。

简单!

function validate(num){
    return (num | 0) > 0;
};

此函数仅对正整数返回“true”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM