文字列を置換する際、複数箇所マッチした場合でもすべて置換できる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()のデモページ
コメントが承認されるまで時間がかかります。