JavaScript REGEX匹配所有并替换

时间:2013-06-12 00:45:55

标签: javascript regex

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

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

模板的一个例子是:

{{name}} is {{age}}

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

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

data.name

data.age

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

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

提前致谢

2 个答案:

答案 0 :(得分:22)

好吧,首先你需要正则表达式上的g标志。这告诉JavaScript替换所有匹配的值。您还可以为replace方法提供函数。像这样:

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

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

答案 1 :(得分:5)

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/