使用正则表达式验证输入是否有任何非数字 [英] 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对象。这似乎应该是超级简单,但由于某种原因,它不工作。
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;
}
或者更简单的是 regex
只有@Eric的建议:
Or even simpler with regex
only as suggested by @Eric:
return /^[0-9]\d*$/.test(theNumber);
更新:
这篇关于使用正则表达式验证输入是否有任何非数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!