正则表达式在带有按键事件{j}的javascript中不起作用

时间:2016-02-22 18:42:39

标签: javascript jquery regex

我想使用Keypress事件通过正则表达式验证一些输入以防止某些字符。

我有这个功能:

function validateRegularExpression(event, expression) {
    var regex = new RegExp(expression);
    var str = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (regex.test(str)) {
        return true;
    }

    event.preventDefault();
    return false;
}

如果我用下一个代码调用它可以正常工作:

$("#input").keypress(function (e) {
    return validateRegularExpression(e, "^[a-zA-Z0-9]+$");
});

但是,如果我用其他表达方式调用它,例如&#34; ^ \ d {0,3}(。\ d)?$&#34; 不起作用。< / p>

即使我已经通过双重 \\

更改了转义字符

我需要以这种方式使用这个函数,因为我需要使用正则表达式验证很多输入,所以我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

你正在测试两种不同的东西。有效的正则表达式是针对该单个字符进行正确测试,而第二个似乎是针对完整字符串进行测试。然而,在测试中,它在完全转义时似乎确实正常工作,也许你没有同时获得\d

"^\\d{0,3}(.\\d)?$"

如果您要测试输入的完整值,则应该针对此var str = e.target.value;进行测试