我希望过滤我的输入,以便它只能包含数字
re = /[^0-9]/;
if(!re.test(form.number.value)) {
alert("Member must contain only numbers. Please try again");
form.member.focus();
return false;
}
但它不起作用(如果我给出一个输入123fd,它不会给我错误)任何人都可以帮助我吗?
答案 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
匹配非数字字符。