JavaScriptのmatchの使い方!部分文字列を検索・取得

JavaScriptで文字列の中に指定した文字列や、パターンにマッチする部分文字列を抽出するmatchメソッドについて書いています。

matchメソッドを使うと、文字列の中から特定の文字列やパターンに合致する部分を簡単に取り出すことができます。
文字列処理を行う際に、特定の文字列やパターンにマッチする部分文字列を取得したい場合に便利です。

実際に動くサンプルを使って、以下の操作を解説します。

・`match`メソッドの基本的な使い方
・`match`メソッドの戻り値の詳細
・`test`メソッドとの違いは?
・`match`メソッドを使うメリット

matchメソッドの基本的な使い方

matchメソッドは、文字列の中に指定した文字列やパターンにマッチする部分文字列を検索し、マッチした結果を配列またはnullとして返します。
基本的な構文は以下のとおりです。

string.match(regexp)
  • regexp: 検索する文字列または正規表現。
    • 文字列またはRegExpオブジェクト(必須)。
    • 正規表現を使用する場合は、フラグ(g、i、mなど)を指定できます。

文字列にマッチする部分文字列を抽出する

matchメソッドに文字列を指定して、マッチするか確認します。

const str = 'Hello World!';

console.log(str.match('World')); // 結果:['World', index: 6, input: 'Hello World!', groups: undefined]
console.log(str.match('world')); // 結果:null

まず、str文字列を作成しています。
そして、次の処理でmatchメソッドを呼んで、中に’World’という文字列がマッチするかどうかを調べています。

str文字列は’World’を含むため、match('World')はマッチした結果を配列として返します。
配列の内容には、マッチした文字列、インデックス、元の文字列が返ってきています。

一方、’world’(小文字)はstr文字列に含まれていないため、match('world')nullを返します(大文字小文字は区別されます)。

正規表現を使ってマッチする部分文字列を抽出する

matchメソッドに正規表現を指定して、マッチするか確認します。

const str = 'Hello World! Hello!';

console.log(str.match(/Hello/g)); // 結果:['Hello', 'Hello']

str文字列の中に’Hello’という文字列がマッチするかどうかを正規表現を使って調べています。
gフラグ(global flag)を指定することで、文字列全体を検索し、マッチしたすべての部分文字列を配列として返します。

matchメソッドの戻り値の詳細

matchメソッドの戻り値は、引数regexpが文字列の場合と正規表現の場合で異なります。

  • regexpが文字列の場合:
    • マッチした場合は、マッチした部分文字列、インデックス、入力文字列などを含む配列を返します。
    • マッチしなかった場合は、nullを返します。
  • regexpが正規表現の場合:
    • gフラグを指定した場合:マッチしたすべての部分文字列を含む配列を返します。
    • gフラグを指定しない場合:マッチした部分文字列、インデックス、入力文字列などを含む配列を返します。
    • マッチしなかった場合は、nullを返します。

testメソッドとの違いは?

matchメソッドとtestメソッドは、どちらも文字列が特定のパターンにマッチするかどうかを調べるために使用されます。
しかし、両者の間にはいくつかの違いがあります。

  • 戻り値:
    • matchメソッドは、マッチした部分文字列を配列として返します。
    • testメソッドは、マッチしたかどうかを真偽値(trueまたはfalse)として返します。
  • 正規表現のフラグ:
    • matchメソッドは、gフラグ(global flag)を指定することで、マッチしたすべての部分文字列を配列として返すことができます。
    • testメソッドは、gフラグを指定しても、最初にマッチした部分文字列があるかどうかを判定するだけです。

下記はサンプルコードです。
testメソッドはtrue/falseを返すだけですが、matchはマッチした部分文字列を取得できます。

const str = 'Hello World! Hello! Hello!!';

console.log(/Hello/g.test(str)); // 結果: true
console.log(str.match(/Hello/g)); // 結果: ['Hello', 'Hello', 'Hello']

matchメソッドを使うメリット

matchメソッドを使う主なメリットは以下のとおりです。

  • 文字列の検索: 文字列の中に特定の文字列やパターンが含まれているかどうかを簡単に判定できます。
  • 部分文字列の抽出: 文字列の中から特定の文字列やパターンにマッチする部分文字列を抽出できます。
  • 柔軟な検索: 正規表現を使用することで、より複雑なパターンにマッチする部分文字列を検索できます。

正規表現を使って、マッチする個数を調べたりしたい場合に使うとよさそうです。
単純に、文字列が含まれるかどうか確認する場合にはincludesメソッドを使うと良いでしょう。

JavaScriptのmatchメソッドの使い方まとめ

今回はJavaScriptのmatchメソッドの使い方について解説しました。
記事の内容をまとめます。

・`match(regexp)`で文字列の中に指定した文字列やパターンにマッチする部分文字列を検索する。
・`regexp`は検索する文字列または正規表現(必須)。
・マッチした場合は、マッチした結果を配列またはnullとして返す。
・正規表現を使用することで、より複雑なパターンにマッチする部分文字列を検索できる。

コメント