14

我正在用 javascript 编写一个简单的模板函数。

我的模板加载正常,现在是我需要将内容解析为占位符的部分。

一个模板的例子是:

{{name}} is {{age}}

这些是动态的,所以理想情况下我想使用正则表达式来匹配和替换占位符的名称,例如

{{name}} 将替换为加载在 javascript 数组中的内容,例如

data.name

data.age

这是我的正则表达式:/\{\{(.*?)\}\}/

这工作正常,但经过大量搜索后,我无法找到一种定义的方式来迭代每个正则表达式匹配。

提前致谢

4

2 回答 2

38

好吧,首先你需要g正则表达式上的标志。这告诉 JavaScript 替换所有匹配的值。您也可以为该replace方法提供一个功能。像这样的东西:

var result = str.replace(/\{\{(.*?)\}\}/g, function(match, token) {
    return data[token];
});

第二个参数匹配第一个子组,依此类推。

于 2013-06-12T00:54:39.150 回答
12
var data = {
    name: 'zerkms',
    age: 42
};

var str = '{{name}} is {{age}}'.replace(/\{\{(.*?)\}\}/g, function(i, match) {
    return data[match];
});

console.log(str);

http://jsfiddle.net/zDJLd/

于 2013-06-12T00:53:56.063 回答