Javascript 正则表达式替换为不同的值

标签 javascript regex replace match

我想知道是否可以每次用不同的值替换字符串中的每个匹配模式。

假设我在一段文本中找到了 5 个匹配项,我想用一个字符串替换第一个匹配项,用另一个字符串替换第二个匹配项,用另一个字符串替换第三个匹配项,依此类推...是否可以实现?

var synonyms = ["extremely", "exceedingly", "exceptionally", "especially", "tremendously"];

"I'm very upset, very distress, very agitated, very annoyed and very pissed".replace(/very/g, function() {
//replace 5 matches of the keyword every with 5 synonyms in the array
});

最佳答案

您可以尝试在 replace 回调函数中替换匹配项:

var synonyms = ["extremely", "exceedingly", "exceptionally", "especially", "tremendously"];
var cnt = 0;
console.log("I'm very upset, very distress, very agitated, very annoyed and very pissed (and very anxious)".replace(/very/g, function($0) {
  if (cnt === synonyms.length) cnt = 0;
  return synonyms[cnt++]; //replace 5 matches of the keyword every with 5 synonyms in the array
}));

如果匹配项多于数组中的项目,cnt 将确保再次使用第一个项目中的数组项。

关于Javascript 正则表达式替换为不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896563/

相关文章:

javascript - 如何在 MaterialUI 的 TextField 中禁用粘贴 (Ctrl+V) 和复制(Ctrl+C)

javascript - 在javascript中切换意外 token

javascript - 如何存储函数或函数的值并在浏览器刷新后重用它们

java - 当已知一些起始字符和一些结束字符时,在 Java 中匹配模式

c++ - QRegExp 仅解析以特定字符开头的字符串

javascript - 一次向下滚动并再次向上滚动后灯箱顶部边距变化

c# - 正则表达式没有从字符串中获取每个匹配项

json - 使用 shell 替换特定行后的单词

c# - 如何从字符串中删除字符,列表中的字符除外

javascript - 替换 STYLE 内容 javascript HTML