使用正则表达式验证输入是否有任何非数字 [英] Using a regular expression to validate whether input has any non digits in it

查看:155
本文介绍了使用正则表达式验证输入是否有任何非数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

以上是我写的验证一些输入。我想要所有的正整数。我遇到的问题是RegExp对象。这似乎应该是超级简单,但由于某种原因,它不工作。

Above is a function I've written to validate some input. I want all positive integers. The problem I'm facing is with the RegExp object. This seems like it should be super simple, but for some reason it's not working.

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

For example if I pass 'f5' I get true, but if I pass '5f' I get false. I'm also having problems when passing negative numbers. -3 doesn't get caught even if I stringify the variable before passing it into the RegExp. I can fix this by adding '&&parseInt(theNumber)>0' in my if statement, but I feel like the RegExp should catch that too. Thanks in advance!

推荐答案

简单地:

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

Live DEMO

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

Or even simpler with regex only as suggested by @Eric:

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

现场演示

更新:

一个很好的作弊表。

这篇关于使用正则表达式验证输入是否有任何非数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆