正規表現テスターツール

書きながら結果を確認。マッチ位置をリアルタイムで強調表示し、キャプチャグループも一覧にします。よく使う正規表現の早見表付き。

/ /
正規表現を入力すると、ここにすべてのマッチ位置が強調表示されます

正規表現テスターツールの使い方

正規表現(Regular Expression、略して regex)は、テキストの一致規則を簡潔な文法で記述するための道具です。フォーム検証、ログの抽出、一括置換、データ整理など幅広く使われます。ただし文法の密度が非常に高く、1 文字間違えると結果がまるごと変わるため、一致結果をその場で確認できるツールがあると作業時間が大きく変わります。

このツールでできること

  • リアルタイム強調表示:正規表現を入力すると同時に、テスト文字列上のすべてのマッチ位置に印が付きます。ボタンを押す必要はありません
  • マッチ一覧:一致した内容とその位置を 1 件ずつ並べるので、突き合わせが容易です
  • キャプチャグループ:括弧で囲んだ部分を色分けして表示するので、グループ分けが意図どおりか確認できます
  • エラー表示:文法の誤りは「括弧が閉じていない」といった形で種類を明示します。黙って失敗することはありません
  • 早見表:よく使う正規表現(携帯番号、メール、身分証明書など)をクリックで入力でき、手書きや暗記が不要です

よく使う 5 つのフラグ

  • g 全体検索:最初の 1 件で止めず、すべての一致を探します。テスト中は常に有効にしておくのがおすすめです。
  • i 大文字小文字を無視:/abc/i は ABC や Abc にも一致します。
  • m 複数行モード:^ と $ を、テキスト全体の先頭・末尾ではなく各行の先頭・末尾に一致させます。行単位の検証では必須です。
  • s ドットが改行に一致:既定では . は改行に一致しませんが、有効にすると改行を含む任意の文字に一致します。
  • u Unicode モード:絵文字や珍しい漢字などの 4 バイト文字を正しく扱います。絵文字を含むテキストで結果がおかしいときは有効にしてみてください。

つまずきやすい点

量指定子の貪欲さ。 .* は既定で貪欲なので、可能な限り多く一致します。たとえば <.*> を <a><b> に使うと、2 つのタグではなく文字列全体が一致します。期待どおりにするには <.*?>(疑問符を付けて非貪欲)にします。

アンカーと複数行。 ^\d+$ は既定モードでは「テキスト全体が数字だけ」の場合しか一致しません。行ごとに検証するには m フラグが必要です。

エスケープの不足。 JavaScript の文字列内に正規表現を書く場合、バックスラッシュは 2 つ重ねます。たとえば携帯番号は "^1[3-9]\\d{9}$" と書きます。本ツールの入力欄は正規表現リテラルの形式なので、\d のようにバックスラッシュ 1 つで構いません。

フォーム検証にはアンカーを付ける。 [0-9]{11} だけでは abc13800000000xyz からも「携帯番号」を抜き出してしまいます。検証用途では ^...$ で全体を限定してください。

性能についての注意

正規表現によっては壊滅的なバックトラックが発生します。例えば (a+)+b を長い aaaa... に対して使うと、所要時間が指数的に増え、ブラウザが固まることがあります。ページが応答しなくなったら、原因はたいてい入れ子の量指定子です。a+b のようなより限定的な形に書き換えてください。

よくある質問

早見表の正規表現はそのまま本番環境で使えますか?

使えますが、必要に応じて調整してください。携帯番号の規則は番号帯の制度変更で変わるため、新しい番号帯が増えたら更新が必要です。身分証明書の完全版は形式と日付の妥当性のみを検証し、末尾のチェックディジットは検証していません。メールアドレスは実用重視の簡略版で、ほとんどの場面をカバーしますが、RFC 5322 に厳密に従うと極端に複雑になるため、通常はそこまでしません。

他の言語では動くのに、ここでは動かないのはなぜ?

本ツールは JavaScript の正規表現エンジンを使うため、PCRE(PHP や Python の re)とは文法が異なります。典型的な違いは 3 点です。JavaScript は (?<name>) 以外の一部の拡張構文、条件付き一致、再帰をサポートしません。また \A \z のようなアンカーは使えず、^ $ で代用します。名前付きグループ (?<name>...) は利用できます。

改行を含む内容に一致させるには?

方法は 2 つあります。. を [\s\S] に置き換えるか、s フラグを有効にします。前者のほうが互換性が高く、ほぼすべてのエンジンで使えます。

テストしたテキストは保存されますか?

いいえ。一致判定はすべてブラウザのメモリ内で行われ、ページを再読み込みすると消えます。アップロードは一切ありません。

関連ツール