我正在尝试使用正则表达式将字符限制为仅字母和数字
$('#textbox').on("keypress", function (e) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
// How do I proceed?
});
但是我不知道现在该怎么办?我该如何处理复制粘贴?
答案 0 :(得分:4)
input
事件应该在较新的浏览器中捕获密钥,粘贴和其他输入等,然后只需要替换值中不是aplhanumeric字符或数字的任何内容。
我会使用/W
,它允许使用下划线和其他一些字符,但过滤掉大多数不是字母数字或数字的其他字符
$('#textbox').on("input", function (e) {
this.value = this.value.replace(/\W/g, '');
});
答案 1 :(得分:0)
按照剩余的解决方案here
$('#textbox').on("keypress", function (e) {
var re = new RegExp("^[a-zA-Z0-9]+$");
var m = re.exec(e.keycode);
if (m == null) {
return false;
} else{
return true;
}
}
更新:你应该监听'input和propertyChangeEvent来处理粘贴事件,并做一些自定义逻辑来摆脱不匹配的字符。这取决于业务需求。
答案 2 :(得分:0)
对于我的解决方案,我使用了一个技巧 - 代码需要从输入字段中删除最后写入的字符,以使其工作。一个例子是my snippet。
这适用于你的情况。
$('#textbox').keyup(function (e) {
this.value = this.value.replace(/[^a-z0-9]/ig, '');
});
它将用于粘贴值,因为它会搜索并替换输入的电话内容。您可以在this fiddle中进行测试。