JavaScriptの正規表現フラグ(g, i, m)の意味と活用方法
先生と生徒の会話形式で理解しよう
生徒
「JavaScriptで正規表現を使うときに、フラグってよく見かけます。gやi、mって何ですか?」
先生
「フラグは正規表現の動作を変えるオプションのようなものです。g は全体検索、i は大文字小文字を無視、m は複数行モードでの検索に使います。」
生徒
「それぞれどういう場合に使うんですか?」
先生
「順番に見ていきましょう。実際にコードを使った例で理解するとわかりやすいです。」
1. gフラグ(global)で文字列全体を検索
g フラグを使うと、文字列の最初のマッチだけでなく、全体の一致する部分をすべて取得できます。
const text = "apple banana apple grape";
const result = text.match(/apple/g);
console.log(result); // ["apple", "apple"]
このように g フラグなしだと、最初の "apple" しか取得できません。全体を検索したいときは必須です。
2. iフラグ(ignore case)で大文字小文字を区別しない検索
i フラグを使うと、大文字と小文字の違いを無視して検索できます。
const text = "Apple banana APPLE grape";
const result = text.match(/apple/gi);
console.log(result); // ["Apple", "APPLE"]
大文字小文字が混在している文章でも、i フラグを付けることで一致させることができます。
3. mフラグ(multiline)で複数行の検索
m フラグは複数行モードで、文字列内の改行ごとに ^ や $ が行頭・行末を意味するようになります。
const text = `first line
second line
third line`;
const result = text.match(/^second/m);
console.log(result); // ["second"]
通常は文字列全体の先頭にしか ^ はマッチしませんが、m フラグをつけると各行の先頭も対象になります。
4. フラグの組み合わせ
複数のフラグは組み合わせることもできます。例えば、全体検索かつ大文字小文字を無視したい場合は gi と書きます。
const text = "Apple apple APPLE";
const result = text.match(/apple/gi);
console.log(result); // ["Apple", "apple", "APPLE"]
このようにフラグを組み合わせることで、より柔軟な文字列検索が可能になります。
5. フラグを活用するポイント
- gフラグ: 全体を検索したいときに使用。配列で複数マッチが取得可能。
- iフラグ: 大文字小文字の違いを無視したいときに便利。
- mフラグ: 複数行の文字列を扱う場合に行頭・行末の検索が可能。
- 必要に応じてフラグを組み合わせることで、効率的に文字列検索ができる。
- まずは基本のg, i, mフラグを覚えて、文章やログ解析などで活用してみましょう。
6. 注意点
正規表現フラグは強力ですが、複雑な組み合わせになると挙動が予想しづらくなることがあります。特に exec や match と組み合わせるときは、どのフラグが必要かを確認してから使用すると安心です。