JavaScriptの正規表現でグループ化・キャプチャを活用する方法
先生と生徒の会話形式で理解しよう
生徒
「JavaScriptの正規表現で複数の文字列をまとめて処理することはできますか?」
先生
「できます。グループ化を使うと、特定の部分をまとめて扱ったり、後で取り出すことができます。」
生徒
「グループ化って具体的にはどう書くんですか?」
先生
「丸括弧 ( ) を使ってグループ化します。そしてキャプチャした内容は後で参照することができます。」
1. グループ化とは?
正規表現で丸括弧 ( ) を使うと、その部分を1つの単位として扱えます。これをグループ化と言います。グループ化すると、マッチした内容を後から取り出したり、置換に利用できます。
const text = "2025-12-11";
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const result = text.match(regex);
console.log(result);
/*
[
"2025-12-11", // 全体のマッチ
"2025", // 1つ目のグループ(年)
"12", // 2つ目のグループ(月)
"11" // 3つ目のグループ(日)
]
この例では、日付の年・月・日をそれぞれ別のグループとしてキャプチャしています。
2. キャプチャした内容の利用
キャプチャした内容は match メソッドで配列として取り出せます。また、置換にも便利です。
const date = "2025-12-11";
const newDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, "$3/$2/$1");
console.log(newDate); // "11/12/2025"
$1、$2、$3 はそれぞれ1つ目、2つ目、3つ目のグループの内容に置き換わります。
3. グループ化の応用例
メールアドレスからユーザー名とドメインを取り出す場合もグループ化が役立ちます。
const email = "user@example.com";
const regex = /(.+)@(.+)/;
const match = email.match(regex);
console.log(match[1]); // "user"
console.log(match[2]); // "example.com"
このように丸括弧で囲むだけで、複数の部分を簡単にキャプチャできます。
4. グループ化のポイント
- 丸括弧
( )で囲むとグループ化できる - キャプチャした内容は
match配列や置換で利用可能 - 複雑な文字列の抽出や置換処理に便利
- グループに名前をつけたい場合は
(?のように名前付きキャプチャも使える…)
初心者の方はまず簡単な文字列で丸括弧を使ったキャプチャを試すことで、正規表現の強力さを実感できます。