查找并替换为JavaScript

5 javascript replace templating

我正在尝试创建一个超级简单的JavaScript模板解决方案.我想使用JavaScript replace方法在模板中查找大括号的所有实例,并用适当的数据替换它们.

例如,如果我的模板是: <p>My name is {{name}}. I am {{age}}.</p>

我想要的结果是: <p>My name is Olly. I am 19.</p>

到目前为止,这是我的代码:http://jsfiddle.net/2RkAG/

我试图让它自动替换每一段数据,所以我不必明确告诉JavaScript要替换什么.但是,这是我遇到问题的地方.

pim*_*vdb 4

$1仅当您直接传递字符串时才有效。它不会按照你的方式工作,因为person["$1"]在字符串传递给.replace- 之前进行评估,并且person["$1"]字面意思是undefined

您可以传递一个函数:http://jsfiddle.net/2RkAG/1/。每次替换都会调用该函数,并传递相当于例如的参数$1

$result.html(template.replace(/{{(.*?)}}/g, function(a, b) {
    return person[b]; // a = complete match, b = first group
}));
Run Code Online (Sandbox Code Playgroud)

您也不需要逃避第一个{