JavaScript/jQuery Regex用有效字符替换输入字段

Oli*_*ryn 4 javascript regex jquery filtering javascript-events

我正在构建一个CMS,用户可以通过文本输入控件自定义页面的SEO URL.例如,假设用户正在创建图库,他们希望在http://www.theirsite.com/my-1st-gallery上访问他们的页面.

请注意"my-1st-gallery"部分如何不包含URL的任何非法字符.由于大多数用户不知道允许和不允许的内容,我想创建一个JavaScript正则表达式过滤器,它可以在键入时过滤/转换所有非法字符.

我知道如何使用jQuery/JavaScript来监听键盘事件,但我不知道如何使用正则表达式来执行以下操作:

  1. 过滤除az,AZ,0-9," - ","_"和空格以外的所有字符.
  2. 将任何"_"和空格更改为" - ",并让用户知道给定的字符已转换为" - ".

有人可以提供一个如何做正则表达式部分的好例子.我再次理解如何倾听关键事件.

感谢您的时间!


好的,有了所有这些好的答案,我想我可以把它拼凑起来用于我的网络应用程序.我希望我可以选择不止一个答案作为我的决赛!:谢谢大家!

jdc*_*589 8

$("#inputElement").keyup(function() {
    var input = $(this),
    var text = input.val().replace(/[^a-zA-Z0-9-_\s]/g, "");
    if(/_|\s/.test(text)) {
        text = text.replace(/_|\s/g, "");
        // logic to notify user of replacement
    }
    input.val(text);
});
Run Code Online (Sandbox Code Playgroud)