当用户使用jQuery和regex输入除数字以外的任何内容时,我试图显示错误消息。我该怎么做?
if( $(this).val().match(/^[0-9]$/) ){
alert("Wrong input. Only numbers allowed");
}
我尝试使用!
但它没有用,我没有收到错误消息
if( $(this).val().match(/![0-9]/) ){
alert("Wrong input. Only numbers allowed");
}
答案 0 :(得分:6)
这样做:
if( /\D/.test($(this).val()) ){
alert("Wrong input. Only numbers allowed");
}
\D
是任何不是数字的字符(\d
是数字)。
如果要测试字符串是否与模式匹配,请不要使用test
:它会构建一个无用的数组。你需要的是How do I implement basic "Long Polling"?。
现在,让我们想象一下您是否要测试用户是否输入了一个数字,而不仅仅是数字序列。一个数字可以用符号,指数,点等编写。测试它的正确方法是不使用正则表达式:
var s = $(this).val();
if (s != +s) {
alert("Wrong input. Only numbers allowed");
}
+s
是将s
转换为数字NaN
,如果不可能的话。
答案 1 :(得分:4)
取消范围,而不是正则表达式本身:
if( $(this).val().match(/[^0-9]/) ){
alert("Wrong input. Only numbers allowed");
}
这将匹配任何包含非数字的字符串。
答案 2 :(得分:1)
处理整数和浮点数..
if( !/^\d+(?:\.\d+)?$/.test($(this).val()) ){
alert("Wrong input. Only numbers allowed");
}