RegExp javascript:授权斜杠

时间:2016-02-08 12:16:11

标签: javascript regex

我有一个RegExp来格式化HTML输入中的URL。 我想删除所有不是字母或数字的字符。

所以我写这个正则表达式:

return url.toLowerCase()
            .replace(/^\s+|\s+$/g, "") 
            .replace(/[_|\s]+/g, "-") 
            .replace(/[^a-z\u0400-\u04FF0-9-]+/g, "") 
            .replace(/[-]+/g, "-") 
            .replace(/^-+|-+$/g, "")
            .replace(/[-]+/g, "-");

但是现在,我想接受斜杠字符(/)。如何通过我的替换接受这个角色?我对RegExp不是很确定。

我想要这个字符串:

  

类别/测试名称=狗

成为:

  

类别/测试名狗

1 个答案:

答案 0 :(得分:1)

如果你想遵循你的逻辑,你需要“保护”否定字符类中的/符号(这里 - /[^a-z\/\u0400-\u04FF0-9-]+/g - 这样你就不会过早删除它),并且然后将所有-/-替换为/作为最后一步。请注意,您正在复制.replace(/[-]+/g, "-")步骤,您可以删除第一个步骤。

return url.toLowerCase()
            .replace(/^\s+|\s+$/g, "") 
            .replace(/[_\s]+/g, "-") 
            .replace(/[^a-z\/\u0400-\u04FF0-9-]+/g, "") 
            .replace(/^-+|-+$/g, "")
            .replace(/-+/g, "-")
            .replace(/-*\/-*/g, "/");

url = "Category / Test name = dog";
document.body.innerHTML = "Old: " + url.toLowerCase()
            .replace(/^\s+|\s+$/g, "") 
            .replace(/[_|\s]+/g, "-") 
            .replace(/[^a-z\u0400-\u04FF0-9-]+/g, "") 
            .replace(/[-]+/g, "-") 
            .replace(/^-+|-+$/g, "")
            .replace(/[-]+/g, "-");
            // and now
document.body.innerHTML += "<br/>New: " + url.toLowerCase()
            .replace(/^\s+|\s+$/g, "") 
            .replace(/[_\s]+/g, "-") 
            .replace(/[^a-z\/\u0400-\u04FF0-9-]+/g, "") 
            .replace(/^-+|-+$/g, "")
            .replace(/-+/g, "-")
            .replace(/-*\/-*/g, "/");