RegEx(正規表現)テスター

正規表現と対象文字列を入力すると,別のプレビューで一致箇所をハイライトし,位置と番号付きキャプチャグループを確認できます.

読み込み中...

このツールが向いている用途

操作欄に戻る ↑

JavaScript正規表現(g/i/m/s/u/yフラグ対応)の一致箇所ハイライトやキャプチャグループの抽出結果をWorker内で確認したい場面に適しています。

まず試せること

パターンに (\d{3})-(\d{4})、対象に 123-4567 を入力し、gフラグで一致箇所とキャプチャ 123 / 4567 を確認してみてください。

利用条件

JavaScript RegExp仕様に準拠しており、PCRE等の他言語独自機能とは完全互換ではありません。Worker制限による入力文字数・実行時間上限があります。

入力データの記述例

パターン: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
フラグ: g, i(画面のスイッチで選択)
対象文字列: test@example.com

処理後の出力結果例

一致件数: 1件
一致文字列: test@example.com

よく発生する構文エラー・記述ミス

  • •ドット(.)などの特殊文字(メタ文字)をエスケープ(\.)していない.
  • •文字クラスを示す角括弧([])やグループ化を示す丸括弧(())の閉じ忘れ.
  • •最長一致(* または +)により,意図しない広範囲の文字列にマッチしてしまっている.

対応規格・動作仕様

JavaScript RegExp (ECMAScript準拠)主要なエスケープシーケンスに対応

関連する技術解説・ブログ記事

ZeroToolsのブラウザ内処理と,外部通信を利用する機能の違いやデータの取り扱いについて.

記事を読む

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

パターン入力から一致の確認まで

この正規表現テスターは,JavaScript環境におけるパターンマッチングをブラウザ上で実行し,その結果を確認するためのツールです.利用者のブラウザに組み込まれている標準の正規表現エンジンを使います.パターン入力欄とテスト文字列入力欄を編集すると,実際のRegExp実行はDedicated Workerへ委譲され,入力したパターンと選択中のフラグから生成された正規表現で照合が行われます.

設定変更や画面離脱時には旧Workerが停止され,構文エラー,タイムアウト,上限超過,Worker利用不可が明確に区別されます.また,Unicode u フラグ有効時の空文字一致ではサロゲートペアを2コードユニット進めて処理されます.入力やフラグを変えるたびに非同期で結果が更新され,送信ボタンを押す必要はありません.

この評価処理には,入力されたパターンやテスト文字列を外部サーバーへ送信する処理はありません.ただし,サイトの閲覧にはアクセス解析や広告配信に伴う通信があります.「入力内容を評価のために送信しない」ことと「ページで通信が一切起きない」ことは異なります.機密性の高い文字列を試す際は,この区別を踏まえてください.

角括弧や丸括弧の閉じ忘れ,無効な量指定子などでパターンを生成できないときは,ブラウザの正規表現エンジンから得たエラーメッセージを画面に表示します.エラーの文言はブラウザによって異なり,必ずしも誤りの位置まで示すものではありません.パターン欄のコピー操作では,その欄の文字列だけをクリップボードへ渡します.

フラグや対象テキストを含んだ実行用コードを出力する機能ではないため,別のプログラムへ貼り付けるときは必要なフラグも確認してください.

第2章

ハイライトとキャプチャで結果を読む

パターンがテスト文字列に一致すると,入力欄の下にあるハイライトプレビューで該当部分が黄色く表示されます.入力欄そのものに色が付くわけではありません.右側の一致リストには一致テキスト,対象文字列内の開始・終了インデックス,丸括弧で取り出した番号付きキャプチャグループを表示します.一致しないときはリストは空になり,構文エラーとは別の状態として確認できます.

パターンや対象テキストを編集すると,その場で再評価が行われます.gフラグがなければ最初の一致だけを,gフラグがあれば通常は複数の一致をハイライトと一致リストで確認できます.ただし,yフラグを併用すると後述のように途中の不一致で探索が止まります.入力例を少しずつ変更し,開始・終了位置やキャプチャグループの変化を見比べると,どの部分がパターンに含まれているかを調べやすくなります.

結果がゼロ件のときも,対象テキストだけを変えて同じパターンを試せます.

例としてパターン (https?://)([\w.-]+) を入力し,対象文字列を「サポートサイトのURLは https://example.com です.」にした場合,https://example.com がハイライトされます.一致リストには同じ文字列と開始インデックス13,終了インデックス32が表示され,グループ1は https://,グループ2は example.com です.

パターン全体の一致と括弧で囲んだ部分の結果を分けて見られるため,どの部分を抽出しているかを確認できます.名前付きキャプチャを使った場合でも,この画面はグループ名のラベルを個別に表示せず,番号付きの結果を並べます.

表示するインデックスはJavaScript文字列のUTF-16コード単位に基づきます.サロゲートペアで表される絵文字などが前方に入ると,見た目の文字数と開始位置の数値が一致しない場合があります.JavaScriptの slice で取り出す位置には利用できますが,原稿の「何文字目」を数える値としてそのまま読むのは適切ではありません.対象文字列を変更したときも同じ基準でインデックスが再計算されます.

第3章

六つのフラグとプリセットの使い分け

入力欄の横では g,i,m,s,u,y の六つのフラグを個別に切り替えられます.g をオフにすると最初の一致を一件表示し,オンにすると regex.exec を繰り返し呼び出して複数の一致をリストにします.i は大文字と小文字を区別しない照合,m は ^ と $ を行頭・行末にも適用する照合,s はドットを改行にも一致させる照合に使います.

u はUnicode文字を含むパターンの解釈を変えますが,画面のインデックスを見た目の文字数に変更するものではありません.y は正規表現の lastIndex が示す位置からだけ一致を試みる sticky フラグです.この画面には lastIndex を手動で設定する欄はありません.

たとえばパターンを \d+,対象文字列を「123 456 789」として g と y を同時にオンにすると,最初の「123」は一致します.次はインデックス3の半角スペースから試すため不一致となり,画面の探索ループがそこで終了します.後方にある「456」と「789」は取得されません.g がオンでも常に離れた一致をすべて取り出せるわけではなく,y との組み合わせを確認する必要があります.

たとえば同じ英字が対象テキストに複数回出るとき,g のオン・オフで一件だけ確認するか,複数件をまとめて確認するかを選べます.複数行のテキストで行頭の形式を調べるときは m,改行をまたぐ部分をドットで照合したいときは s を試せます.フラグを変えるとパターンを変えなくても結果が変わるため,パターンとフラグの両方を記録して比較することが重要です.

メール,URL,日本の電話,日付,郵便番号の五つのプリセットもあります.選択すると現在のパターン,フラグ,テスト文字列があらかじめ用意された値に入れ替わります.これらは入力の手間を省くための初期値であり,選択直後にサンプルと一致することや,現実のあらゆるアドレス・電話番号・日付の妥当性を保証するものではありません.

たとえばメールのプリセットはパターンの先頭と末尾に ^ と $ を使いますが,サンプルは説明の文言を含む複数行です.mフラグもオフなので,選んだ直後には対象文字列全体がメールアドレスとして一致せず,結果がゼロ件になります.初期表示でも同様の組み合わせです.一致を試すには,対象文字列をメールアドレス一件だけに変更するか,対象文の途中から検索できるようにアンカーを調整します.

mをオンにしても各行の先頭に説明文がある場合は一致しません.アンカー,フラグ,対象文字列の関係を確認してから結果を読んでください.

第4章

この画面でできないことと重いパターンへの注意

このツールは一致箇所とキャプチャを確認する画面であり,文字列の置換,ファイルのアップロード,パターン・対象文字列・一致結果の保存はできません.抽象構文木の表示,正規表現エンジンの状態遷移の可視化,パターンの静的解析も提供していません.構文が有効で結果が表示されることは,パターンが安全であることや,あらゆる入力で効率的に動くことの証明にはなりません.

正規表現の評価はブラウザのメインスレッドではなくDedicated Workerへオフロードして実行されます.約1000ミリ秒の締切を要求してworkerを強制停止(terminate)する仕組みや,パターン2000文字,対象テキスト10万UTF-16コードユニット,マッチ数5000件,結果文字数の推計8MiBという上限値が設けられており,Workerが利用できない場合にメインスレッドへフォールバックすることはありません.

未対応構文は構文エラーとして即座に拒否され,実行時間超過とは区別されます.Workerの利用によりメインスレッドが正規表現処理で長時間占有されるリスクは大幅に低減されますが,実行環境の差異やバックグラウンドでのタイマー精度の影響により締切の厳密な実時間一致は保証されず,ブラウザ全体が絶対に固まらないことまでを保証するものではありません.

過度なバックトラックを含む重いパターンではタイムアウトで中断される可能性があるため,長文での性能や安全性の判断には適切な検証を併用してください.

一致を確認した後,実際に置換する用途にはテキスト置換ツール,一致部分やグループをまとめて出力する用途には正規表現抽出ツールを使えます.このテスターの一致リストはパターンの確認には便利ですが,他のツールへ一致結果そのものを送る連携機能はありません.必要なら確認したパターンをコピーし,移動先のツールで入力とフラグを改めて設定してください.

よくある質問(FAQ)

A.
ツールの評価機能には入力内容を外部へ送信・保存する処理はありません.ただし,サイトの閲覧にはアクセス解析や広告などの通信があります.
A.
プリセットのパターンは ^ と $ で囲まれ,対象文字列には各行の先頭に説明文があります.選択時は m フラグもオフなので一致しません.m をオンにするだけでも説明文が残れば一致しないため,対象文字列をメールアドレス単独に変えるか,アンカーを調整してください.
A.
現在の実装では正規表現の実行をDedicated Workerへ委譲しており,メインスレッドが正規表現処理で長時間占有されるリスクを低減しています.約1000ミリ秒の締切を要求して超過時にはWorkerを強制終了(terminate)する仕組みや規模制限が設けられていますが,タイマー精度のばらつき等により厳密な時間一致やブラウザが絶対に固まらないことまでは保証されません.計算量が過大なパターンはタイムアウトで中断されます.