正規表現テスター

JavaScriptの正規表現をテキストに対して試し、すべての一致とキャプチャグループをブラウザ内で確認できます。

すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。

前後のスラッシュは付けません。
g i m s u y d v のいずれか。

ハイライト表示


    

パターンを入力し、一致させたいテキストを貼り付けると、何を捉えて何を取りこぼすかがすぐにわかります。キャプチャグループもそれぞれ分けて表示されます。

仕組み

パターンはブラウザがコンパイルし、入力に合わせてテキストに対して実行されます。同じエンジンなので、表示されるのは同じ正規表現がJavaScriptで行うこととまったく同じです。

gフラグを付けるとすべての一致が、付けないと最初の一致だけが表示されます。iフラグは大文字と小文字を区別せず、mは^と$を行の境界で一致させ、sはドットを改行にも一致させ、uはUnicodeモードを有効にし、yは検索をlastIndexの位置に固定します。

番号付きのキャプチャグループは順番に表示されます。(?<name>...)と書いたグループは、その名前で表示されます。

例

ケース 入力 結果
ISO形式の日付を各部分に分解 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) 年・月・日を名前付きグループとして
投稿内のすべてのハッシュタグ #\w+ gフラグでハッシュタグごとに1つの一致

よくある質問

これはどの種類の正規表現ですか?

ブラウザが実装しているJavaScriptの正規表現です。PHPやgrep -Pが使うPCRE、Goが使うRE2とは、後読み、強欲な量指定子、Unicodeプロパティのエスケープが異なります。ここで動くパターンがそちらでも動くとは限りません。

パターンを入力している途中でページが固まりました。

パターンによっては、特定のテキストに対して壊滅的なバックトラックを起こします。(a+)+のような入れ子の量指定子が典型例です。テキスト全体の検索には上限があり、警告を出して打ち切りますが、暴走した1回の照合はページ内の何によっても止められません。JavaScriptには、一度実行を始めた正規表現を中断する方法がないのです。タブを再読み込みし、これを事故ではなく発見と受け止めてください。同じ正規表現をサーバーで使えば、プロセスがひとつ止まってしまいます。

スラッシュは付ける必要がありますか?

いいえ。パターンだけを入力し、フラグはフラグ欄に入れてください。/abc/giをパターンとして貼り付けると、スラッシュも検索対象の一部になってしまいます。

テスト用テキストはどこかに送信されますか?

いいえ。しかも、共有できるリンクからも意図的に除外されています。リンクをコピーして共有されるのはパターンとフラグだけで、テストに使ったテキストは決して含まれません。

知っておきたいこと

  • パターンがサーバーで実行されることはありません。訪問者が入力した、ひどいバックトラックを起こす正規表現は、サーバーではサービス拒否攻撃になりますが、タブの中ならタブひとつ分の負担で済みます。

出典

開発者向けのすべてのツール