JavaScriptのreplace()完全ガイド|文字列置換の基本から応用まで徹底解説

1. はじめに

JavaScriptは、ウェブ開発において最も広く使用されているプログラミング言語の1つです。特に、文字列操作はユーザー入力やデータ処理の際によく使われる機能です。その中でもreplace()メソッドは、文字列の置換処理を簡単に行える強力なツールとして知られています。

この記事では、JavaScriptのreplace()メソッドについて基礎から応用まで詳しく解説します。基本的な使い方だけでなく、正規表現を用いた高度な置換や実用例も取り上げますので、初心者から中級者まで幅広く対応した内容になっています。

2. replace()メソッドの基本

replace()メソッドとは?

replace()メソッドは、文字列内の特定の部分を別の文字列に置き換えるためのJavaScriptの組み込み関数です。このメソッドを使うことで、文字列データの編集や変換を効率的に行うことができます。

構文

string.replace(pattern, replacement)
  • pattern: 検索する文字列または正規表現。
  • replacement: 置き換える文字列、またはコールバック関数。

基本的な使い方

以下の例では、単純な文字列置換を行います。

let text = "Hello, world!";
let result = text.replace("world", "JavaScript");
console.log(result); // "Hello, JavaScript!"

このコードでは、「world」という文字列を「JavaScript」に置き換えています。

注意点

  1. replace()は最初に一致した部分のみ置換します。
  2. すべての一致部分を置換したい場合は、正規表現とフラグgを使用する必要があります。

3. 正規表現を用いた高度な置換

正規表現とは?

正規表現は、文字列パターンを表現するための強力なツールです。JavaScriptでは、正規表現を使用して複雑なパターン検索や置換を簡単に行えます。

正規表現を使った置換例

let text = "apple, banana, apple";
let result = text.replace(/apple/g, "orange");
console.log(result); // "orange, banana, orange"

フラグの種類

  • g: グローバル置換(すべての一致を置換)
  • i: 大文字小文字を区別しない置換
  • m: 複数行モード

応用例: 大文字小文字を区別しない置換

let text = "Hello, hello, HELLO";
let result = text.replace(/hello/gi, "hi");
console.log(result); // "hi, hi, hi"

4. 複数箇所の置換

全一致置換

複数箇所の一致部分をすべて置換するには、正規表現のgフラグを使用します。

let text = "cat dog cat bird";
let result = text.replace(/cat/g, "fish");
console.log(result); // "fish dog fish bird"

複数の異なる文字列を一括で置換するテクニック

let text = "red blue green";
let replacements = {red: "pink", blue: "cyan", green: "lime"};

Object.keys(replacements).forEach(key => {
  let regex = new RegExp(key, "g");
  text = text.replace(regex, replacements[key]);
});

console.log(text); // "pink cyan lime"

この方法を使うと、複数のパターンを一度に置き換えることができ、コードの可読性も向上します。

5. コールバック関数による動的な置換

コールバック関数とは?

コールバック関数は、置換処理中に呼び出され、現在のマッチ情報を利用して処理をカスタマイズできる関数です。

動的置換の例

1. 文字列の順番入れ替え

let text = "Tanaka, Taro";
let result = text.replace(/(\w+), (\w+)/, (match, p1, p2) => {
  return `${p2} ${p1}`;
});
console.log(result); // "Taro Tanaka"

2. 日付フォーマットの変換

let date = "2024-12-25";
let formattedDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, (match, year, month, day) => {
  return `${month}/${day}/${year}`;
});
console.log(formattedDate); // "12/25/2024"

 

6. 特殊文字やエスケープシーケンスの扱い

特殊文字とは?

正規表現では、特定の文字がメタ文字として特別な意味を持ちます。これらをそのまま検索や置換で使用するには、エスケープシーケンスを使う必要があります。

特殊文字を含む文字列の置換

例1: ピリオドを含む文字列を置換

let text = "www.example.com";
let result = text.replace(/\./g, "-");
console.log(result); // "www-example-com"

例2: ドル記号を除去

let price = "$1,000";
let result = price.replace(/\$/g, "");
console.log(result); // "1,000"

HTMLエスケープ文字の置換

例: HTMLタグのエスケープ

let html = "<div>Hello!</div>";
let result = html.replace(/</g, "&lt;").replace(/>/g, "&gt;");
console.log(result);
// "&lt;div&gt;Hello!&lt;/div&gt;"

7. 実用例と応用テクニック

改行コードを
タグに変換

let text = "Hello\nWorld\nJavaScript";
let result = text.replace(/\n/g, "<br>");
console.log(result);
// "Hello<br>World<br>JavaScript"

URLのパラメータ操作

let url = "https://example.com/?id=123&lang=en";
let result = url.replace(/lang=en/, "lang=ja");
console.log(result);
// "https://example.com/?id=123&lang=ja"

ユーザー入力のサニタイズ

function sanitizeInput(input) {
  return input.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}

let userInput = "<script>alert('XSS');</script>";
let safeInput = sanitizeInput(userInput);
console.log(safeInput);
// "&lt;script&gt;alert('XSS');&lt;/script&gt;"

8. 注意点とベストプラクティス

最初の一致のみが置換されることに注意

let text = "apple apple orange";
let result = text.replace("apple", "banana");
console.log(result); // "banana apple orange"

大文字・小文字の区別に注意

let text = "JavaScript is powerful. javascript is versatile.";
let result = text.replace(/javascript/gi, "JS");
console.log(result);
// "JS is powerful. JS is versatile."

特殊文字のエスケープ漏れに注意

function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}

let text = "Price: $100";
let result = text.replace(new RegExp(escapeRegExp("$"), "g"), "USD ");
console.log(result);
// "Price: USD 100"

 

9. まとめ

記事の振り返り

  • 基本的な使い方: replace()メソッドの構文や単純な置換例を解説しました。
  • 正規表現の応用: 高度な置換処理のための正規表現とフラグの使い方を学びました。
  • コールバック関数: 動的な置換処理の方法と応用例を取り上げました。
  • 実用例: URL操作やサニタイズ処理など、実務に役立つテクニックを紹介しました。
  • ベストプラクティス: 注意点やパフォーマンス対策について詳しく解説しました。

最後に

JavaScriptのreplace()メソッドは基本から応用まで幅広く活用できる便利なツールです。今後もJavaScriptに関する役立つ情報を提供していきますので、ご期待ください。