用!用于正则表达式编号验证

时间:2015-05-30 15:02:05

标签: javascript regex

当用户使用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");
}

3 个答案:

答案 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");
}