我有一个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不是很确定。
我想要这个字符串:
类别/测试名称=狗
成为:
类别/测试名狗
答案 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, "/");