我想将所有单词 XXX/XXX/XXX/
... 替换为一个 XXX/
例如:
www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX
应该是:
www.domain.com/XXX/section/XXX
我怎样才能用正则表达式代替:
str.replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX").replace("XXX/XXX","XXX");
谢谢
最佳答案
解决方案
const input = "www.domain.com/XXX/XXX/XXX/XXX/XXX/section/XXX/XXX";
const expectedOutput = "www.domain.com/XXX/section/XXX"
const actualOutput = input.replace(/(\/XXX)\1+/g, "$1")
console.log("output", actualOutput)
说明
()
将捕获括号内的匹配。
\1
和 $1
将使用第一个捕获组内捕获的内容,在我们的例子中为 /XXX
。
+
将要求 1 次或多次重复。
g
标志将导致正则表达式应用于整个字符串,即使之前找到了匹配项。
整个正则表达式将查找 /XXX
后跟另一个 /XXX
1 次或多次,然后替换仅与一个“/XXX”匹配的内容。
关于javascript 正则表达式 - 将所有实例替换为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45430289/