正则表达式替换除数字和小写之外的任何内容

时间:2011-05-27 03:06:14

标签: javascript jquery regex

我有一个输入,我绑定到keyup()

在每个密钥上,我希望它:

  1. 禁止任何不是数字,字母或短划线的字符和
  2. 用小写字母替换任何大写字符。
  3. 正则表达让我的头爆炸,任何帮助?

    $('.my-input').keyup(function() {
        this.value = this.value.replace(/[^0-9a-z-]/g,/[0-9a-z-]/g);
    });
    

4 个答案:

答案 0 :(得分:14)

this.value = this.value.toLowerCase().replace(/[^0-9a-z-]/g,"");

答案 1 :(得分:1)

$('.my-input').keyup(function() {
    this.value = this.value.replace(/[^0-9a-zA-Z-]/g, '').toLowerCase();
});

答案 2 :(得分:1)

数字,字母或短划线的正则表达式为:[-0-9a-z](在字符类中包含文字短划线,将其指定为第一个字符;此后它被视为范围运算符)。

尝试:

$('.my-input').keyup(function() {this.value = this.value.toLowerCase().replace(/[^-0-9a-z]/g,''); });

答案 3 :(得分:0)

好问题..你快到了!

$('.my-input').keyup(function() { this.value = this.value.replace(/[^A-Za-z0-9-]/g,"").toLowerCase();

正则表达式不适合小写,使用内置函数。你的正则表达式是好的,但替换函数需要一个正则表达式,替换是一个字符串,而不是正则表达式*。

(*替换字符串有一些小的魔法,但对于小写来说还不够)