仅过滤输入数字

时间:2014-03-04 16:18:32

标签: javascript regex input

我希望过滤我的输入,以便它只能包含数字

   re = /[^0-9]/; 
if(!re.test(form.number.value)) {
    alert("Member must contain only numbers. Please try again");
    form.member.focus();
    return false;
}

但它不起作用(如果我给出一个输入123fd,它不会给我错误)任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

由于您的正则表达式正在检查非数字,因此将if条件中的否定更改为:

re = /\D/; 
if(re.test(form.number.value)) {
   alert("Member must contain only numbers. Please try again");
   // rest of code
}

而不是:

if(!re.test(form.number.value)) {...}

答案 1 :(得分:2)

您可以使用HTML5输入类型编号仅限制数字条目:

<input type="number" name="someid" />

答案 2 :(得分:0)

if($input == intval($input)){
    //OK
 }

编辑抱歉,这是javascript:

 if(input == parseInt(input)){
    //OK
 }

答案 3 :(得分:0)

您的正则表达式与数字匹配。当你否定测试时,你实际上是在说“匹配数字”,这意味着你没有得到非数字字符串的警告信息。 E.g:

!(/[^0-9]/.test('123'))
// true -> alert

!(/[^0-9]/.test('123fd'))
// false -> don't enter if clause

您只需删除if语句中的感叹号即可修复代码。然而,更清楚地表达你的测试的方式将是anubhava提到:

if (/\D/.test(form.number.value)) {
    // validation error
}

\D匹配非数字字符。