我想使用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>
即使我已经通过双重 \\
更改了转义字符我需要以这种方式使用这个函数,因为我需要使用正则表达式验证很多输入,所以我做错了什么?
谢谢!
答案 0 :(得分:0)
你正在测试两种不同的东西。有效的正则表达式是针对该单个字符进行正确测试,而第二个似乎是针对完整字符串进行测试。然而,在测试中,它在完全转义时似乎确实正常工作,也许你没有同时获得\d
"^\\d{0,3}(.\\d)?$"
如果您要测试输入的完整值,则应该针对此var str = e.target.value;
进行测试