根据匹配的 RegEx JavaScript 动态替换数据

Max*_*xim 0 javascript regex object

我有一个动态模板字符串,类似于以下内容:

There are {{num}} matches for the category {{category}}.
Run Code Online (Sandbox Code Playgroud)

我也有一个像这样的对象:

There are {{num}} matches for the category {{category}}.
Run Code Online (Sandbox Code Playgroud)

如何用对象中显示的值替换每个模板变量,其中键是大括号中的文本。例如:

let data = {
  "num": // some value
  "category": // another value
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下方法:

// example object
let data = {
  "num": "six",
  "category": "shoes"
}

// result
"There are six matches for the category shoes"
Run Code Online (Sandbox Code Playgroud)

上面的代码将大括号中的所有文本实例替换为undefined. 我查看了多个 StackOverflow 问题,但都没有解决这个问题。

Rob*_*bok 5

幸运的是,replace()允许使用回调:

matchesMessage = template.replace(
    /\{\{(.+?)\}\}/g,
    (match, tag) => data[tag.trim()]
);

console.log(matchesMessage);
// "There are six matches for the category shoes."
Run Code Online (Sandbox Code Playgroud)