【发布时间】:2012-06-07 16:52:07
【问题描述】:
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 也应该抓住这一点。提前致谢!
【问题讨论】:
-
正则表达式不起作用,因为您需要转义
\字符,因为\在字符串文字表示法中也有意义。new RegExp('\\D','g'); -
...另外,您实际上并不需要
g修饰符,因为听起来即使是一个非数字也足以标记输入。 -
@amnotiam 感谢您提供有关为什么我正在做的事情不起作用的信息。正则表达式是我仍然陌生的东西。希望我能尽快改变。
标签: javascript regex validation integer expression