javascript - 如何用变量值替换所有带有特定前缀的字符串

标签 javascript jquery regex

我正在尝试做的是在带有“{{msgStr.”的字符串中查找所有实例。作为前缀并将其替换为变量。例如:

var msgStr = {
    h1Text: 'test',
    pText: 'test2'
}

var string = '<h1>{{msgStr.h1Text}}</h1><p>{{msgStr.pText}}</p>';
var pattern = new RegExp("{{msgStr.(.+?)}}","g");
alert(string.replace(pattern, msgStr[$1]));

问题是 msgStr[$1] 返回未定义。我尝试了 msgStr["$1"] 结果相同。如果我只执行“$1”,它会输出 h1Text 和 pText,这就是我想像 msgStr["h1Text"] 一样使用的内容。

不确定我需要做什么才能让它正常工作。任何帮助将不胜感激。

最佳答案

使用callback as a second argument对于 String.prototype.replace:

str.replace(/{{msgStr\.(.+?)}}/g, function(_, c) {
    return msgStr[c];
});

关于javascript - 如何用变量值替换所有带有特定前缀的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719859/

相关文章:

javascript - 如何将文本从一个多重输入复制到另一个

javascript - 使用 jQuery 根据浏览器宽度加载特定内容

javascript - JQuery 追加值在设置另一个值之前设置为 null

regex - 具有 3 个正则表达式替换的 Sublime 文本片段替换

javascript - 有条件地将字符串拆分为数组

javascript - Xhtml 幻灯片放映不起作用

php - 在 Javascript 循环中增加 PHP 变量

python - 正则表达式匹配内部 '.'

javascript - Node.js 进程在某些 ASP.NET Core 项目中消耗大量 CPU

javascript - jQuery 切换背景,每次点击