2

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

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

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

4

1 回答 1

5

根据 MDN.replace() ,这些标志对于普通方法来说是非标准的。相反,您可以传入具有相同结果的 RegExp。

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

由于花括号在正则表达式中具有特殊意义,因此您必须对其进行转义。

于 2013-07-11T20:02:58.630 回答