我有一个输入字符串:
var mystring = "{{myDog}} is a good dog"
OR
var mystring =“{{anotherDog}}是一只好狗”
现在,使用replace
方法和正则表达式,我想替换"{{myDog}}"
"{{anotherDog}}"
或"Tommy"
。
注意:我不想依赖2组花括号中的字符串。所以,2个花括号之间可以有任何东西,花括号应该被Tommy取代。
因此,myString.replace('{{myDog}}', 'Tommy')
无效。
所以,
mystring.replace('**someregularexpressionhere**', 'Tommy');
"Tommy is a good dog" // this should be value returned.
我如何撰写正则表达式?
答案 0 :(得分:2)
我写过小模板功能,你可以尝试一下
function tpl(str, data) {
Object.keys(data).forEach(function (key) {
str = str.replace(new RegExp('\{\{' + key + '\}\}'), data[key]);
});
return str;
}
console.log(
tpl('{{myDog}} is a good dog, {{anotherDog}}', { myDog: 'Tommy', anotherDog: 'Jim' })
);
<强>更新强>
function tpl(str, data) {
return str.replace(/\{\{(.+?)\}\}/g, function (match) {
return data.shift() || match;
});
}
console.log(
tpl('{{a}} is a good dog, {{b}}', ['Tommy', 'JIm'])
);
答案 1 :(得分:1)
建立一个 RegExp ,让您拨打.replace
一次就像这样
function replaceTemplate(str, dict) {
var re = RegExp('\\{\\{(' + Object.keys(dict).join('|') + ')\\}\\}', 'g');
return str.replace(re, function (a, b) {
return dict[b];
});
}
var s = '{{foo}} is {{bar}}',
d = {
foo: 'long day',
bar: 'long'
};
replaceTemplate(s, d); // "long day is long"