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

Spa*_*rky 1 javascript regex

当用户使用jQuery和regex输入除数字以外的任何内容时,我试图显示错误消息.我该怎么做呢?

if( $(this).val().match(/^[0-9]$/) ){
    alert("Wrong input. Only numbers allowed");
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用,!但它没有工作,我没有收到任何错误消息

if( $(this).val().match(/![0-9]/) ){
    alert("Wrong input. Only numbers allowed");
}
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 6

像这样做 :

if( /\D/.test($(this).val()) ){
    alert("Wrong input. Only numbers allowed");
}
Run Code Online (Sandbox Code Playgroud)

\D是任何不是数字的字符(\d是数字).

match当你想测试一个字符串是否匹配一个模式时,不要使用它:它构建一个无用的数组.你需要的是什么test.

现在,让我们假设您想测试用户是否输入了数字,而不仅仅是一系列数字.一个数字可以写成符号,指数,点等.测试的正确方法是不使用正则表达式:

var s = $(this).val();
if (s != +s) {
    alert("Wrong input. Only numbers allowed");
}
Run Code Online (Sandbox Code Playgroud)

+s如果不可能s,NaN则转换为数字.

  • 并不是每天都有一个很好的理由在比较中使用JavaScript的自动类型转换 - 很好! (2认同)