javascript 正则表达式 - 将所有实例替换为一个

标签 javascript regex

我想将所有单词 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/

相关文章:

javascript - 垂直居中绝对div

javascript - HighCharts 禁用图例中的某些系列名称

regex - PowerShell Try 语句缺少其 Catch 或 finally block

javascript - 给定一个字符串形式的 URL,如何只提取域和扩展名?

ruby - 正则表达式提取两个字符串之间的字符串

javascript - 如何批量创建百万级数据?

javascript - Vue JS 服务器端渲染 : computed property not seeing changes in store

JavaScript 仅调用 header

regex - regmatches 从 gregexpr 返回多个匹配项

php - 匹配来自所有语言php的字母的正则表达式