Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】String::String.prototype.matchAllインスタンスメソッドの使い方

String.prototype.matchAll()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

String.prototype.matchAll()メソッドは、呼び出し元の文字列に対して、指定された正規表現(RegExpオブジェクト)に一致するすべての部分文字列を検索し、それらのマッチを表すイテレーターを返すメソッドです。このメソッドは、正規表現のg(グローバル)フラグが設定されていることを必須とします。もしgフラグがない場合、TypeErrorが発生するか、想定通りの結果が得られないことがありますのでご注意ください。

返されるイテレーターは、for...ofループなどの構文を用いて反復処理することができ、それぞれの繰り返しで、正規表現のマッチに関する詳細な情報を含むマッチオブジェクトが得られます。このマッチオブジェクトには、正規表現全体に一致したテキスト、キャプチャグループで捕捉された部分文字列の配列、元の文字列内でのマッチの開始位置を示すインデックス、そして入力文字列自体などのプロパティが含まれています。これにより、マッチした内容だけでなく、その位置や構造も細かく把握することが可能です。

従来のString.prototype.match()メソッドが、gフラグなしでは最初の一致しか返さず、gフラグありではキャプチャグループの詳細情報が一部失われる場合があるのに対し、matchAll()メソッドは、常にすべてのマッチについて、そのキャプチャグループを含む完全な詳細情報を提供します。この特性により、文字列中の特定のパターンをすべて抽出し、各マッチの具体的な内容を詳細に分析したい場合に非常に強力なツールとなります。例えば、文書中からすべての電話番号やメールアドレスを抽出し、それぞれを構造化されたデータとして扱いたいシステム開発のシナリオで役立ちます。

公式リファレンス: String.prototype.matchAll()

構文(syntax)

1const text = "apple banana apple orange apple";
2const regex = /apple/g;
3
4const matchesIterator = text.matchAll(regex);
5
6for (const match of matchesIterator) {
7  console.log(match);
8}

引数(parameters)

regexp

  • regexp: RegExp: マッチングに使用する正規表現オブジェクト。グローバルフラグ 'g' が必須です。

戻り値(return)

Iterator

文字列に対して正規表現による検索を繰り返し実行し、マッチしたすべての結果をイテレーター(Iterator)として返します。このイテレーターは、マッチした各部分文字列とその詳細情報を含むオブジェクトを生成します。

関連コンテンツ

関連プログラミング言語