Javascript字符串替换为动态创建的模式

时间:2013-07-11 19:58:52

标签: javascript str-replace

我的代码只替换了第一个匹配,忽略了标志(全局和多行)。我做错了什么?

for (var i = 0; i < values.length; i++) {
        template = template.replace('{' + i + '}', values[i].toString().trim(), 'gm');
    }

如您所见,我的占位符具有以下格式:{0},{1}等

1 个答案:

答案 0 :(得分:4)

According to MDN,标志是普通.replace()方法的非标准。相反,您可以传入一个具有相同结果的RegExp。

template.replace(new RegExp('\\{' + i + '\\}', 'gm'),
    values[i].toString().trim());

由于花括号在正则表达式中具有特殊意义,因此必须将它们转义。