【JavaScript】replace / replaceAll – 文字列の一部を別の文字列に置き換えるメソッド

JavaScriptのreplace()replaceAll()は、文字列の一部を別の文字列に置き換えるメソッドです。文字列の加工やデータの整形をする際に便利なメソッドなので、基本的な使い方や注意点をまとめていきたいと思います。

replace() メソッドとは?

replace()は、指定した文字列や正規表現に一致する最初の1つの部分を置き換えるメソッドです。

基本的な構文

JavaScript
文字列.replace(検索する値, 置換後の値)
  • 検索する値:置き換えたい文字列または正規表現を指定します。
  • 置換後の値:新しく置き換える文字列を指定します。

単純な文字列置換

JavaScript
const text = 'Hello Coffee!';
console.log(text.replace('Coffee', 'Donut')); // "Hello Donut!"

正規表現を使った置換

JavaScript
const text = 'ホットコーヒーとホットカフェラテをお願いします。';
console.log(text.replace(/ホット/, 'アイス')); // "アイスコーヒーとホットカフェラテをお願いします。"

replace()は最初に一致したもののみを置き換えます。

replaceAll() メソッドとは?

replaceAll()replace()と似ていますが、一致するすべての部分を置き換えます。

基本的な構文

JavaScript
文字列.replaceAll(検索する値, 置換後の値)
  • 検索する値:置き換えたい文字列またはグローバル修飾子 (/g) を持つ正規表現を指定します。
  • 置換後の値:新しく置き換える文字列を指定します。

すべての一致を置換

JavaScript
const text = 'ホットコーヒーとホットカフェラテをお願いします。';
console.log(text.replaceAll('ホット', 'アイス')); // "アイスコーヒーとアイスカフェラテをお願いします。"

正規表現を使った置換

JavaScript
const text = 'abc abc abc';
console.log(text.replaceAll(/abc/g, 'xyz')); // "xyz xyz xyz"

replaceAll()ES2021以降 のメソッドなので、古いブラウザでは動作しない可能性があります。

replace / replaceAllの共通の使い方

大文字小文字を無視して置換(正規表現)

JavaScript
const sentence = 'コーヒーは最高!コーヒーはおいしい!';
console.log(sentence.replace(/コーヒー/gi, '紅茶')); // "紅茶は最高!紅茶はおいしい!"

文字列テンプレートを利用した置換

JavaScript
const menu = 'cappuccino';
const order = 'Can I hav a MENU?';
console.log(order.replace('MENU', menu)); // "Can I hav a cappuccino!"

使用時の注意点

replace() は最初の一致のみ置換する

JavaScript
console.log('coffee coffee coffee'.replace('coffee', 'cappuccino')); // "cappuccino coffee coffee"

すべて置き換えたい場合は replaceAll()または/gを使用しましょう。

大文字小文字を区別する

replace() / replaceAll()はデフォルトで大文字小文字を区別します。

JavaScript
console.log('Hello Coffee'.replace('coffee', 'Donut')); // "Hello Coffee"(変更なし)

大文字小文字を無視するには、正規表現/iを使用します。

さいごに

  • replace() は最初の一致のみを置換します。
  • replaceAll() は一致するすべての部分を置換します(ES2021以降)。
  • 大文字小文字を区別するが、正規表現を使えば無視できます。