javascript - jQuery 正则表达式可以匹配数字,但不能匹配连字符

标签 javascript jquery regex

因此,我想将输入字段限制为仅允许数字和连字符。我对改变我的方法不感兴趣,但想了解为什么我的正则表达式匹配数字而不匹配连字符。

正则表达式:

/[^0-9-]/g

jsFiddle:http://jsfiddle.net/abriggs/7G6JD/

最佳答案

问题出在 - 的键码上,

keycode of - is 189 or 109 .

但是 String.fromCharCode(189)½

String.fromCharCode(109)m

您可以使用以下代码:

function numbersOnly(number, allowDash) {
    // Filter non-digits/dash from input value.
    console.log(number);
    if (allowDash) {
        number = number.replace(/[^0-9\-]/g, '');
    } else {
        // Filter non-digits from input value.
        number = number.replace(/\D/, '');
    }
    return number;
}

$(function(){

    // Do not allow non-numeric characters in bill zip code
    $('#billZip').keydown(function(e) {
        console.log(e.keyCode);
        if (e.keyCode != 8 && e.keyCode != 37 && e.keyCode != 39) {
              if(e.keyCode ===189||e.keyCode ===109)
                 if (numbersOnly(String.fromCharCode(45), true) != "")
                    return true;
                 else 
                     return false

            if (numbersOnly(String.fromCharCode(e.which), true) != "")
                return true;
            else return false
        }
    });

});

Fiddle

关于javascript - jQuery 正则表达式可以匹配数字,但不能匹配连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187889/

相关文章:

javascript - Jquery 复选框影响一个元素而不是所有元素

javascript - react : passing parameters to a function in map

javascript - 如何根据 div 内部类的值对 div 进行排序

javascript - 在 API.ai 的文本响应中添加新行 (\n)

jquery - :nth-of-type() in jQuery/Sizzle?

jquery - 如何在 JQuery Select2 插件中使用选定值创建占位符文本

javascript - SAP UI5::拖放链接

javascript - 使用正则表达式确定使用 JavaScript 的域

用于匹配缩进连续行的正则表达式

python - 正则表达式查找嵌套括号之间的文本