私のコードは、フラグ (グローバルおよび複数行) を無視して、最初の一致のみを置き換えます。私は何を間違っていますか?
for (var i = 0; i < values.length; i++) {
template = template.replace('{' + i + '}', values[i].toString().trim(), 'gm');
}
ご覧のとおり、プレースホルダーの形式は {0}、{1} などです。
私のコードは、フラグ (グローバルおよび複数行) を無視して、最初の一致のみを置き換えます。私は何を間違っていますか?
for (var i = 0; i < values.length; i++) {
template = template.replace('{' + i + '}', values[i].toString().trim(), 'gm');
}
ご覧のとおり、プレースホルダーの形式は {0}、{1} などです。
MDN によると.replace()
、フラグは通常の方法では非標準です。代わりに、同じ結果で RegExp を渡すことができます。
template.replace(new RegExp('\\{' + i + '\\}', 'gm'),
values[i].toString().trim());
中括弧は正規表現で特別な意味を持つため、エスケープする必要があります。