文字列を置換する際、複数箇所マッチした場合でもすべて置換できるreplaceAll()を使ってみます。
サンプルコード
replaceAll()と同じく置換処理を行うreplace()も合わせて動作確認してみます。
const sample = 'Aabbccabc';
// replace()の場合、マッチした最初の文字列のみ置換
console.log(sample.replace('a', 'z')); // Azbbccabc
// 正規表現のgオプションで、マッチしたすべての文字列を置換
const regex = /a/g;
console.log(sample.replace(regex, 'z')); // Azbbcczbc
// replaceAll()の場合、マッチしたすべての文字列を置換
console.log(sample.replaceAll('a', 'z')); // Azbbcczbc
// 正規表現のiオプションで、大文字小文字を区別しないで文字列を置換(この時gオプションも必要)
const regex2 = /a/gi;
console.log(sample.replaceAll(regex2, 'z')); // zzbbcczbc
// 正規表現でgオプションを設定しなかった場合はエラーになる
const regex3 = /a/i;
console.log(sample.replaceAll(regex3, 'z')); // Uncaught TypeError: String.prototype.replaceAll called with a non-global RegExp argument
基本的にはコメントに書いた通りで、replaceAll()でも正規表現は使用できますが、その際はgオプションを合わせて設定しないとエラーになる点に注意が必要そうです。
replace()とreplaceAll()のデモページ
コメントが承認されるまで時間がかかります。