.match()

正規表現によってマッチする文字列があれば、その文字列を取得します。

文法

str.match(regexp);

マッチした結果を含む配列が返されるか、またはマッチするものが無ければ、nullが返されます。

引数 説明
regexp 正規表現オブジェクトを指定します。 もし、正規表現オブジェクトでは無いものが渡されると、 new RegExp(obj)を使用することで、暗黙的にRegExp(正規表現)に変換します。

説明

正規表現がgフラグを含まない場合、 RegExp.exec(str)と同じ結果を返します。 返される配列は追加のinputプロパティを持ち、それには解析された元の文字列が含まれます。 加えて、マッチした文字列の0基準のインデックスを表すindexプロパティも持ちます。

正規表現がgフラグを含む場合、このメソッドは全てのマッチを含む配列を返します。 マッチするものが無い場合、nullが返されます。

RegExpも参照

  • 文字列が正規表現RegExpにマッチするのか確認だけをしたい場合は、 RegExp.test(str)を使用することが出来ます。
  • 最初のマッチだけを見つけたい場合は、 代わりにRegExp.exec(str)を使用することをお勧めします。

matchの使用例

下記の例ではmatchは、1つまたは複数の数値文字が後に続き、 その数値文字の後に小数点と数値文字のセットが0回または複数回続く、 "Chapter"を見つけるために使用されています。 この正規表現はフラグiを含み、これは大文字・小文字の違いを無視します。

var str = "For more information, see Chapter 3.4.5.1";
var re = /(chapter \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

// ["Chapter 3.4.5.1", "Chapter 3.4.5.1", ".1"]を出力

// インデックス0の"Chapter 3.4.5.1"は1つ目のマッチです。
// インデックス1の"Chapter 3.4.5.1"は、(Chapter \d+(\.\d)*)の外側の括弧によって取得される1つ目の値です。
// インデックス2の".1"は、(\.\d)の括弧によって取得される2つ目の値です。

例: g(global)とi(ignore)フラグを使用したmatch

下記は、globalとignoreのフラグをmatchで使用した例になります。 A~E、a~eの全ての文字が、それぞれ配列の要素となって返されます。

var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

戻り値の配列の特徴が、global(g)フラグの有無で大きく変わります。 gフラグを付けた場合、1つ目の例の括弧を使用しての1つ目の値の取得、2つ目の値の取得といった概念が無いことに注意してください。

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。