我目前正在为NodeJs制作一个小模块.我需要一点帮助.
我会这样说的.我有一个带字符串的变量.它包含一个字符串html值.现在我需要$(title)
用我的对象替换这样的东西{ "title" : "my title" }
.这可以扩展到用户提供的任何内容.这是当前的代码.我认为我需要RegEx才能做到这一点.你能帮助我吗?
var html = `
Document $(title)
Test file, $(text)
`;
function replacer(html, replace) {
// i need a regex to replace these data
//return replacedData;
}
replacer(html, { "title" : "my title", "text" : "text is this" });
您可以使用正则表达式使用简单的模板函数,
var replacer = function(tpl, data) { var re = /\$\(([^\)]+)?\)/g, match; while(match = re.exec(tpl)) { tpl = tpl.replace(match[0], data[match[1]]) re.lastIndex = 0; } return tpl; }
用得像
var result = replacer(html, { "title" : "my title", "text" : "text is this" });
的jsfiddle
细节在这里
编辑
实际上,作为评论中提到的torazaburo,它可以被重构为
var replacer = function(tpl, data) { return tpl.replace(/\$\(([^\)]+)?\)/g, function($1, $2) { return data[$2]; }); }
的jsfiddle
希望这可以帮助