正規表現を使って文字列のマッチングを行うJavaScriptのmatch()メソッドについて、基本的な使い方から実践的な例まで詳しく解説します。

match()メソッドの基本

match()メソッドは、文字列に対して正規表現パターンでマッチングを行い、マッチした結果を配列として返すメソッドです。

const text = "Hello, JavaScript!";
const result = text.match(/JavaScript/);
console.log(result); // ["JavaScript"]

基本的な使い方

単純な文字列マッチング

const str = "Hello, World!";
const result = str.match(/World/);
console.log(result[0]); // "World"

グローバルマッチング(gフラグ)

const text = "apple, banana, apple, cherry";
const results = text.match(/apple/g);
console.log(results); // ["apple", "apple"]

大文字小文字を区別しない(iフラグ)

const text = "Hello HELLO hello";
const results = text.match(/hello/gi);
console.log(results); // ["Hello", "HELLO", "hello"]

実践的な使用例

メールアドレスの抽出

const text = "Contact us at info@example.com or support@example.com";
const emails = text.match(/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g);
console.log(emails); // ["info@example.com", "support@example.com"]

数字の抽出

const text = "The price is $123.45 and quantity is 50";
const numbers = text.match(/\d+(\.\d+)?/g);
console.log(numbers); // ["123.45", "50"]

戻り値について

match()メソッドの戻り値は、マッチングの結果によって異なります:

  • マッチした場合(gフラグなし):マッチ情報を含む配列
  • マッチした場合(gフラグあり):マッチした文字列の配列
  • マッチしない場合:null
const text = "JavaScript is awesome";
console.log(text.match(/Python/));  // null

注意点とベストプラクティス

1. nullチェック

match()がnullを返す可能性があるため、必要に応じてnullチェックを行いましょう。

const text = "Hello, World!";
const result = text.match(/Python/);
if (result) {
    console.log("マッチしました:", result[0]);
} else {
    console.log("マッチしませんでした");
}

2. フラグの適切な使用

目的に応じて適切なフラグを使用しましょう:

  • g:グローバルマッチ
  • i:大文字小文字を区別しない
  • m:複数行マッチ
const text = `Line 1
Line 2
Line 3`;
const lines = text.match(/^Line/gm);
console.log(lines); // ["Line", "Line", "Line"]

まとめ

match()メソッドは、JavaScriptで文字列のパターンマッチングを行う際の強力なツールです。正規表現と組み合わせることで、複雑な文字列処理も簡単に実装できます。ただし、nullの戻り値や適切なフラグの使用など、いくつかの注意点に気をつける必要があります。

上記の例を参考に、自身のプロジェクトで効果的にmatch()メソッドを活用してください。