【JavaScript】文字列を検索するメソッド「match()」を解説

こんにちは!Kです!

前回、前々回に続き、今回で3回目になりましたが、今回もJavaScriptで文字列を検索するときに使うメソッドについて解説していきます。

全4回に分けて文字列を検索するメソッドについて各々の記事で解説しています。
ちなみに解説する4つのメソッドは以下の通りです。

・indexOf()
・search()
・match()
・test()

今回の記事では「match()」について解説していきます。

indexOf()とsearch()を解説した以下の記事についてもぜひご覧ください!

それではmatch()メソッドの解説です!

match()

match()メソッドは、対象の文字列(Stringオブジェクト)に対して、正規表現を使って一致している結果を得るために使うメソッドです。

まずは構文をみてみましょう!

str.match(regexp)

引数の意味は以下の通りです。

regexp
正規表現のオブジェクト。
※ 正規表現ではないオブジェクトが渡された場合、new RegExp(regexp)を使用してRegExpオブジェクトに暗黙的に変換されます。

ここまではsearch()メソッドと似ているように見えますが、実は大きな違いがあります。
それは、得られる結果は「位置」ではなく一致した「文字列」である点です。
また、正規表現のグローバルフラグ(g)の有無によって得られる結果が変わる点も違いの一つです。
ちなみに一致しなかった場合は、「null」を返します。

グローバルフラグ(g)の有無によって得られる結果の違いをまとめると以下の通りです。

gフラグあり:正規表現に一致した全ての結果を返す
gフラグなし:正規表現に一致した最初の結果のみを返す

さらにコード例をみてましょう。
得られる結果もsearch()メソッドと違いますので比べてみてください。

コード例:gフラグあり

// 任意の文字列
var str = 'codeclub965';

// 正規表現:a,b,cに一致するものを検索
var regex = /[a-c]/g;
var result = str.match(regex);
console.log('検索結果:' + result);

■実行結果

検索結果:c,c,b

gフラグがあるので、文字列「codeclub965」に対して、a,b,cに一致している全ての結果を返しているのが分かります。

コード例:gフラグなし

// 任意の文字列
var str = 'codeclub965';

// 正規表現:a,b,cに一致するものを検索
var regex = /[a-c]/;
var result = str.match(regex);
console.log('検索結果:' + result);

■実行結果

検索結果:c

こちらの例では、gフラグがないので、文字列「codeclub965」に対して、a,b,cに一致している最初の結果のみを返しているのが分かります。

また、上記の例二つを見て分かったかと思いますが、前の記事のsearch()メソッドの結果では「位置」を返していましたが、match()メソッドでは一致した文字列を返していることも分かりますね!
文字列を抽出したい場合はmatch()メソッドを使いましょう。

次回はtest()メソッド

今回はmatch()メソッドを解説しました。
search()メソッドと似ているかと思いきや、よく見ると全然違うことが分かったかと思います。

場所(位置)を知りたいのか、文字列の抽出をしたいのかという得られる結果で使い分けができますね!

次回はいよいよ4つ目のメソッド「test()」について解説します!
それでは、また!

Follow me!

【JavaScript】文字列を検索するメソッド「match()」を解説” に対して1件のコメントがあります。

コメントは受け付けていません。