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 に答える