查找并替换为JavaScript

时间:2012-01-04 15:43:15

标签: 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要替换什么。但是,这是我遇到问题的地方。

1 个答案:

答案 0 :(得分: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
}));

您也不需要转义第一个{