我想要做的是在" {{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]返回undefined。我用同样的结果尝试了msgStr [&#34; $ 1&#34;]。如果我只是&#34; $ 1&#34;,它会输出h1Text和pText,这就是我想要使用的东西,如msgStr [&#34; h1Text&#34;]。
不确定我需要做些什么才能让它正常工作。任何帮助将不胜感激。
答案 0 :(得分:8)
String.prototype.replace
使用callback as a second argument:
str.replace(/{{msgStr\.(.+?)}}/g, function(_, c) {
return msgStr[c];
});
答案 1 :(得分:0)
试试这个(只需传递function
作为replace
函数的第二个参数)
var msgStr = {
h1Text: 'test',
pText: 'test2'
}
var string = '<h1>{{msgStr.h1Text}}</h1><p>{{msgStr.pText}}</p>';
string.replace(/{{msgStr.(.+?)}}/g, function(substr, match){return msgStr[match]})
编辑我想我有点晚了,页面没有刷新,没有看到上面的答案:)