JavaScript REGEX匹配所有并替换

And*_*ira 8 javascript regex

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

我的模板加载很好,现在是我需要将内容解析到占位符的部分.

模板的一个例子是:

{{name}} is {{age}}
Run Code Online (Sandbox Code Playgroud)

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

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

data.name

data.age
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢

ros*_*dia 24

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

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

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


zer*_*kms 7

var data = {
    name: 'zerkms',
    age: 42
};

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

console.log(str);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/zDJLd/