我有一个RegExp来格式化一个输入。我想删除所有不是字母或数字的字符。
所以我写了这个regexp:
return url.toLowerCase()
.replace(/^\s+|\s+$/g, "")
.replace(/[_|\s]+/g, "-")
.replace(/[^a-z\u0400-\u04FF0-9-]+/g, "")
.replace(/[-]+/g, "-")
.replace(/^-+|-+$/g, "")
.replace(/[-]+/g, "-");但是现在,我想接受斜杠字符(/ )。如何通过我的替换来接受这个角色?我对RegExp不是很确定。
我要这条绳子:
类别/测试名称=狗
成为:
类别/测试-名称-狗
发布于 2016-02-08 13:37:17
如果您想遵循您的逻辑,您需要在否定字符类中“保护”/符号(这里是- /[^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, "/");
https://stackoverflow.com/questions/35269488
复制相似问题