使用正则表达式允许禁止文本

时间:2014-01-31 18:28:26

标签: jquery regex

我正在尝试使用正则表达式将字符限制为仅字母和数字

$('#textbox').on("keypress", function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    // How do I proceed?
});

但是我不知道现在该怎么办?我该如何处理复制粘贴?

3 个答案:

答案 0 :(得分:4)

input事件应该在较新的浏览器中捕获密钥,粘贴和其他输入等,然后只需要替换值中不是aplhanumeric字符或数字的任何内容。

我会使用/W,它允许使用下划线和其他一些字符,但过滤掉大多数不是字母数字或数字的其他字符

$('#textbox').on("input", function (e) {
    this.value = this.value.replace(/\W/g, '');
});

FIDDLE

答案 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中进行测试。