我正在尝试做的是在带有“{{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/