Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式可以替换除数字和小写以外的任何内容_Javascript_Jquery_Regex - Fatal编程技术网

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

Javascript 正则表达式可以替换除数字和小写以外的任何内容,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个绑定到keyup()的输入 在每个关键点上,我希望它: 不允许任何不是数字、字母或破折号的字符,以及 将所有大写字符替换为小写字符 Regex让我头晕目眩,有什么帮助吗 $('.my-input').keyup(function() { this.value = this.value.replace(/[^0-9a-z-]/g,/[0-9a-z-]/g); }); 数字、字母或破折号的正则表达式为:[-0-9a-z](若要在字符类中包含文字破折号,请将其指定为第一个字符;然后将

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

在每个关键点上,我希望它:

  • 不允许任何不是数字、字母或破折号的字符,以及
  • 将所有大写字符替换为小写字符
  • Regex让我头晕目眩,有什么帮助吗

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

    数字、字母或破折号的正则表达式为:
    [-0-9a-z]
    (若要在字符类中包含文字破折号,请将其指定为第一个字符;然后将其视为范围运算符)

    尝试:


    好问题。。你快到了

    $('.my-input').keyup(function() { this.value = this.value.replace(/[^A-Za-z0-9-]/g,"").toLowerCase();
    
    Regex不是合适的小写工具,请使用内置函数。您的正则表达式很好,但是replace函数需要一个正则表达式,替换的是字符串,而不是正则表达式*


    (*替换字符串有一些小魔力,但不足以小写)

    这不起作用,因为它不允许A-Z大写字母。。需要为他们考虑最终结果。。。。编辑我是傻瓜。。我首先看到你的托洛尔:)@Jake-因为我在替换之前转换成小写,所以我不需要在正则表达式中查找大写。是的,我在我的评论后注意到了托洛尔。。对其进行了编辑:)您已经获得了有关此项的RegEx部分的帮助,但不要忘记,如果用户使用鼠标(右键单击并粘贴,拖放)在输入中输入数据,则无需触发keyup事件.我刚检查过,javascript没有java那么繁琐-你可以在正则表达式的开头或结尾加上文字破折号
    this.value = this.value.toLowerCase().replace(/[^0-9a-z-]/g,"");
    
    $('.my-input').keyup(function() {this.value = this.value.toLowerCase().replace(/[^-0-9a-z]/g,''); });
    
    $('.my-input').keyup(function() { this.value = this.value.replace(/[^A-Za-z0-9-]/g,"").toLowerCase();