Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. 文字列.match() / matchAll() / search()

文字列.match() / matchAll() / search()

文字列のメソッドを使って正規表現による検索を行います。『match()』と『matchAll()』は一致した内容を返し、『search()』は一致した位置を返します。

構文
// パターンに一致した情報を取得します。
var result = "文字列".match(正規表現);

// パターンに一致したすべての情報をイテレータで取得します。
var results = "文字列".matchAll(正規表現);

// パターンに最初に一致した位置を返します。
var index = "文字列".search(正規表現);
メソッド一覧
メソッド概要
文字列.match(正規表現)正規表現に一致した結果を配列で返します。『g』フラグなしの場合は最初の一致とキャプチャグループを、『g』フラグありの場合はすべての一致を配列で返します。一致しない場合は『null』を返します。
文字列.matchAll(正規表現)『g』フラグ付きの正規表現ですべての一致を詳細情報付きで返します。キャプチャグループの内容も含まれるため、『match()』の『g』フラグ版より詳しい情報が得られます。
文字列.search(正規表現)正規表現に最初に一致した位置を数値で返します。一致しない場合は『-1』を返します。
サンプルコード
// match()の基本的な使い方
var text = "電話番号は090-1234-5678です";
var result = text.match(/\d{2,4}-\d{4}-\d{4}/);
console.log(result[0]); // 『090-1234-5678』と出力されます。

// match()にgフラグを付けてすべての一致を取得します。
var colors = "赤red 青blue 緑green";
var matches = colors.match(/[a-z]+/g);
console.log(matches); // 『["red", "blue", "green"]』と出力されます。

// match()でキャプチャグループを使う例
var dateText = "今日は2026-03-15です";
var dateResult = dateText.match(/(\d{4})-(\d{2})-(\d{2})/);
console.log(dateResult[0]); // 『2026-03-15』と出力されます。一致した文字列全体です。
console.log(dateResult[1]); // 『2026』と出力されます。1つ目のキャプチャグループです。
console.log(dateResult[2]); // 『03』と出力されます。2つ目のキャプチャグループです。
console.log(dateResult[3]); // 『15』と出力されます。3つ目のキャプチャグループです。

// matchAll()でgフラグ付きでもキャプチャグループを取得します。
var log = "エラー: E001, 警告: E002, エラー: E003";
var iterator = log.matchAll(/E(\d{3})/g);
for (var entry of iterator) {
	console.log(entry[0] + " → コード: " + entry[1]); // 一致全体とキャプチャグループが取得できます。
}

// search()で一致した位置を取得します。
var sentence = "JavaScriptは楽しい言語です";
console.log(sentence.search(/楽しい/)); // 『12』と出力されます。一致した開始位置です。
console.log(sentence.search(/Python/)); // 『-1』と出力されます。一致しないためです。
実行結果

上記のコードを実行すると、コンソールには以下のように出力されます。

"090-1234-5678"
["red", "blue", "green"]
"2026-03-15"
"2026"
"03"
"15"
"E001 → コード: 001"
"E002 → コード: 002"
"E003 → コード: 003"
12
-1
概要

『文字列.match()』は正規表現に一致した結果を配列で返す文字列のメソッドです。『g』フラグの有無で動作が大きく変わり、『g』フラグなしの場合はキャプチャグループの内容を含む詳細情報を返しますが、『g』フラグありの場合は一致した文字列の配列のみを返し、キャプチャグループの情報は失われます。

『文字列.matchAll()』は『g』フラグ付きの正規表現ですべての一致をキャプチャグループの情報付きで取得できるメソッドです。『match()』の『g』フラグでは得られなかったキャプチャグループの内容もすべて取得できるため、複数の一致から個別のデータを抽出する場面で活用します。

『文字列.search()』は一致した位置のみを返す軽量なメソッドで、一致するかどうかと位置だけを知りたい場合に適しています。正規表現オブジェクト側のメソッドで検索を行う場合は『正規表現.test() / exec()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。