正規表現テスター

正規表現パターンとテスト文字列を入力すると、マッチ箇所をハイライト表示し、キャプチャグループの値を一覧表示します。g/i/m/s/uフラグに対応、JavaScriptのRegExpをそのまま使用します。

よく使う正規表現パターン一覧

用途 パターン 説明
メールアドレス ^[\w.+-]+@[\w-]+\.[\w.-]+$ @の前後にユーザー名とドメインを持つ簡易的なメールアドレス形式を検証します(完全なRFC準拠ではありません)。
日本の電話番号 ^0\d{1,4}-\d{1,4}-\d{4}$ ハイフン区切りの固定電話・携帯電話番号(例: 03-1234-5678、090-1234-5678)にマッチします。
URL https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? http:// または https:// で始まるURL文字列を抽出します。クエリパラメータやパスも含みます。
日本の郵便番号 ^\d{3}-\d{4}$ 「123-4567」の形式(3桁-4桁)の郵便番号にマッチします。
HEXカラーコード ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ CSSで使われる#RRGGBB形式または省略形#RGB形式のカラーコードにマッチします。
半角数字のみ ^[0-9]+$ 文字列全体が半角数字(0〜9)のみで構成されているかを検証します。

正規表現テスターとは

正規表現(Regular Expression)は、文字列の中から特定のパターンを検索・抽出・検証するためのミニ言語です。「メールアドレスの形式かどうかを確かめたい」「ログの中からIPアドレスだけを取り出したい」といった作業を、1行のパターンで表現できます。ただし記号の組み合わせが独特で、書いたその場でパターンが意図どおりに動くかを目で確認しづらいのが難点です。

このツールは、入力した正規表現パターンとテスト文字列をJavaScriptのRegExpエンジンでその場で評価し、マッチした箇所を黄色くハイライト表示します。あわせてキャプチャグループごとの値・マッチ数・構文エラーの内容も一覧表示するため、パターンを少しずつ修正しながら「今どこにマッチしているか」を確認するトライ&エラーの作業を、コードを書いたり実行環境を用意したりせずにブラウザだけで完結できます。

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

  1. 正規表現パターンを入力する 上部の入力欄に検証したいパターンを入力します。スラッシュ/ /は自動的に補われるため、パターン本体だけを書けば大丈夫です。
  2. フラグを選択する g・i・m・s・uのチェックボックスから必要なものをONにします。複数一致をすべて見たい場合はgフラグを外さないでください。
  3. テスト文字列を入力する マッチさせたい文章を下のテキストエリアに貼り付けます。複数行にまたがる文章もそのまま入力できます。
  4. ハイライトと一覧を確認する 入力するたびに自動的に再計算され、マッチした部分が黄色くハイライトされます。下の表でマッチ全体とキャプチャグループの値を1件ずつ確認できます。
  5. パターンを調整する マッチ数や範囲が意図と違う場合は、パターンやフラグを直接書き換えて結果の変化を見ながら微調整します。

使いこなすためのヒント

  • 入力欄の右側に表示される /フラグ を見ると、現在チェックしているフラグの組み合わせがひと目で確認できます。
  • キャプチャグループは () で囲んだ部分だけが対象です。グループ化せずに条件だけ指定したい場合は (?:...)(非キャプチャグループ)を使うとグループ一覧が煩雑になりません。
  • gフラグを外すと最初の1件のみがマッチします。すべての出現箇所を数えたい場合はgフラグを必ずONにしてください。
  • 「サンプルを挿入」ボタンでメールアドレス抽出の実例パターンを読み込めるので、キャプチャグループの挙動を確認する際の出発点として使えます。
  • このツールの判定処理はすべてブラウザ内で完結しており、入力したパターンやテスト文字列がサーバーに送信されることはありません。

正規表現テスターの活用シーン

フォームのバリデーション設計

Webフォームの入力チェックに使う正規表現を実装前にここで検証し、想定する入力(全角文字混じり・ハイフンの有無など)が正しく通るか・不正な入力が正しく弾かれるかを事前に確認できます。

サーバーログからの情報抽出

アクセスログやエラーログの中からIPアドレス・タイムスタンプ・ステータスコードなど特定の項目だけを抜き出すパターンを、実際のログ断片を貼り付けながら組み立てられます。

CSV・テキストデータのクレンジング

表記ゆれのある電話番号や日付形式を統一する前段階として、対象となる行がどのパターンにマッチするかを分類・確認する用途に使えます。

コードレビューでの動作確認

他の人が書いた正規表現の意図が読み取りにくいとき、実際の値を流し込んでマッチ範囲を可視化することで、レビュー中の疑問をその場で解消できます。

既存パターンの副作用チェック

既存の正規表現を修正する際、変更前後でテスト文字列に対する挙動が変わっていないかをハイライト表示で目視確認する用途にも向いています。

正規表現の関連用語集

キャプチャグループ
パターン中の()で囲んだ部分のこと。マッチした文字列全体だけでなく、その一部分だけを個別に取り出したいときに使います。このツールの結果表ではグループ1、グループ2…という番号で値が一覧表示されます。
非キャプチャグループ
(?:...)の形式で書くグループです。条件をまとめる目的だけで括弧を使いたい場合に使うと、キャプチャグループの番号がずれず、結果一覧も見やすく保てます。
後方参照
パターン内で以前にマッチしたキャプチャグループの内容を、同じパターンの中で再利用する記法です。\1のように番号で参照するほか、名前付きグループなら\k<name>で参照できます。同じ単語が連続する箇所の検出などに使われます。
非貪欲マッチ
量指定子(*・+など)の直後に?を付けると、できるだけ短い範囲でマッチしようとする挙動に切り替わります。既定(貪欲マッチ)ではできるだけ長く一致しようとするため、HTMLタグの抽出など範囲を絞りたい場面で区別が重要になります。
先読み・後読み
(?=...)(肯定先読み)・(?!...)(否定先読み)・(?<=...)(肯定後読み)・(?<!...)(否定後読み)の総称です。マッチ結果には含めずに「この前後に特定の文字列があるかどうか」だけを条件にできます。
文字クラス
[abc]や[a-z0-9]のように角括弧で囲み、その中のいずれか1文字にマッチさせる記法です。[^abc]のように先頭に^を置くと「含まない」条件に反転します。
アンカー
文字そのものにはマッチせず、位置だけを指定する記法です。^は文字列(mフラグ時は各行)の先頭、$は末尾、\bは単語の境界を表します。
フラグ
正規表現全体の解釈方法を変えるオプションです。このツールが対応するg(すべて検索)・i(大文字小文字無視)・m(複数行)・s(改行もドットに含める)・u(Unicode対応)の5種類があります。

よくある質問

gフラグ(global)がない場合、正規表現は文字列中の最初の1件だけにマッチし、それ以降の出現箇所は無視されます。複数の一致箇所をすべて見つけたい場合は必ずgフラグをONにしてください。

基本的な構文([abc]・\d・+・*など)はほぼ共通ですが、名前付きグループの記法や先読み・後読みの対応状況、フラグの種類には言語ごとに細かな違いがあります。このツールはJavaScriptのRegExp仕様に準拠しているため、他言語での動作を保証するものではありません。

いいえ。すべての処理はブラウザ内のJavaScriptで完結しており、入力内容がtoolbase.ccのサーバーに送信・保存されることはありません。

括弧の閉じ忘れや、量指定子(*・+・?)の前に対象がない、不正な文字クラスなど、JavaScriptのRegExpコンストラクタが構文エラーと判定した場合に表示されます。エラーメッセージにヒントが含まれているので、括弧の対応や特殊文字のエスケープ(\.や\(など)を確認してください。
ツールくん

余談ですが ― 正規表現エンジンの内部で起きていること

正規表現(Regular Expression)はもともと1950年代に数学者スティーブン・クリーネが提唱した「正規言語」の理論に由来します。これをUNIXの初期のテキストエディタedやコマンドgrep(globally search a Regular Expression and Printの略)が実装として取り入れたことで、テキスト処理の実用ツールとして急速に普及しました。grepという名前自体が正規表現の操作コマンドに由来しているのは象徴的です。

JavaScriptのRegExpエンジンは内部的に「バックトラック法」という戦略でマッチングを行います。パターンの各要素を順番に試し、途中で失敗したら一歩戻ってやり直す仕組みです。この方式は柔軟な反面、(a+)+bのようなパターンと長い非マッチ文字列の組み合わせでは試行回数が指数関数的に増える「破滅的バックトラック(catastrophic backtracking)」を引き起こし、ブラウザやサーバーをフリーズさせることがあります。複雑なパターンを本番コードで使う前は、必ず様々な入力でテストすることが重要です。

グローバル(g)フラグを付けた正規表現オブジェクトは、内部にlastIndexというカーソル位置を保持し、exec()を呼ぶたびに続きから検索を再開します。同じ正規表現オブジェクトを使い回すと意図せずこのカーソルが残ってしまうことがあるため、このツールでは毎回新しいRegExpインスタンスを生成して意図しない状態の持ち越しを防いでいます。

名前付きキャプチャグループ((?<name>...))はECMAScript 2018で追加された比較的新しい機能です。番号ではなく名前でグループを参照できるため、パターンが複雑になるほど可読性が向上します。日付のパースなど「どのグループが何を意味するか」が重要な場面で特に有用です。