言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理に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』と出力されます。一致しないためです。

概要

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

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

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

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
全バージョンで対応しています
Safari Safari
18 以降
全バージョンで対応しています
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
3 以前 ×
Opera Opera
48 以降
3 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

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