正規表現テスター
ブラウザ内で動作し、何もアップロードされません
JavaScriptの正規表現を自分のテキストで試せます。キャプチャグループと置換にも対応しています。
Test text
Type a pattern
正規表現とは?
正規表現(regex)は、文字列の集合を表すパターンです。\d{3} は3桁の数字、[a-z]+ は1文字以上の小文字の英字を表し、^ と $ はマッチを先頭と末尾に固定します。プログラムはパターンを使って、テキストを検索・抽出・検証・置換します。
パターンの中でかっこで囲んだ部分はキャプチャグループです。(\d{4})-(\d{2}) を 2025-07 に当てると、グループ1は 2025、グループ2は 07 になります。(?<year>\d{4}) のような名前付きグループを使うと、名前で部分を参照できます。フラグはパターン全体の動作を変えます。i は大文字・小文字を区別せず、g は最初の1つだけでなくすべてのマッチを探します。
このテスターは、ブラウザやNode.jsのエンジンであるJavaScriptの RegExp で動いているので、ここで動くパターンはJavaScriptやTypeScriptでも同じように動きます。他の言語も構文の大部分は同じですが、すべてではありません。よくある違いは下の質問にまとめています。
使い方
- 1スラッシュの間の入力欄にパターンを入力します。スラッシュ自体は入れません。Presets でパターンとサンプルテキストを読み込めます。
- 2ツールバーでフラグをオン・オフします。
gグローバル、i大文字・小文字を無視、m複数行、sdotAll、uとvUnicodeモード、ysticky、dグループのインデックスです。フラグにマウスを重ねると説明が表示されます。 - 3検索したいテキストを Test text に貼り付けるか、ファイルをドロップします。マッチは入力に合わせてハイライトされ、行、列、キャプチャグループとともに Matches に一覧表示されます。
- 4マッチをクリックするか、パターンの入力欄でEnter(ほかの場所ではF7)を押すと、テキスト内でそのマッチが選択され、グループがハイライトされます。Shift+Enter または Shift+F7 で前に戻ります。
- 5Replace を開いて
$2/$1や$<year>などの置換を試し、結果を確認します。Apply to test text で結果をテキストに反映し、Ctrl+Z で元に戻せます。
トラブルシューティング
- 2秒後に停止しました
- このテキストに対して、パターンが壊滅的なバックトラックを起こしています。
(a+)+や(.*,)*のような入れ子の量指定子は、失敗するまでに指数関数的な数のマッチ方法を試します。.*の代わりに[^,]*を使うなど、繰り返し部分のマッチ方法が1通りになるようにしてください。同じパターンはサーバーを固まらせることもあるため、ここでは停止させています。 - コードでは動くのにここでは動かない、またはその逆
- コードの文字列リテラルでは、バックスラッシュをすべて2つずつ書きます(
"\\d+")。ここでは/\d+/のスラッシュの間と同じように、パターンそのものを1つのバックスラッシュで入力します(\d+)。 - マッチが1つしか見つからない
gフラグがオフになっています。オフだと最初のマッチで検索が止まり、Replace も最初の1つしか置き換えません。^や$が1回しかマッチしないmフラグがないと、テキスト全体の先頭と末尾にしかマッチしません。各行でマッチさせるにはmをオンにしてください。uフラグで無効なエスケープ、または無効なグループになる- Unicodeモードはより厳密です。文字クラスの外の
\-のように意味のないエスケープはエラーになります。バックスラッシュを取り除くか、uをオフにしてください。
よくある質問
JavaScriptの正規表現は、PCRE、Python、Javaとどう違いますか?
JavaScriptには、強欲な量指定子(a++)やアトミックグループ((?>…))、\A と \Z がありません(m フラグなしの ^ と $ を使います)。パターンの先頭に (?i) を書くこともできないので、フラグは切り替えボタンで設定してください。名前付きグループは、Pythonでは (?P<name>…)、JavaScriptでは (?<name>…) と書きます。後読み、名前付きグループ、\p{L} のようなUnicodeプロパティのエスケープ(u または v が必要)は、現在のブラウザで使えます。
m フラグと s フラグの違いは何ですか?
m(複数行)では、^ と $ が各行の先頭と末尾にマッチします。s(dotAll)では、. が改行にもマッチします。s がない場合、. は改行以外の任意の1文字にマッチします。
メールアドレスのプリセットは完全なメールアドレス検証ですか?
いいえ。テキストの中からよくある name@domain.tld の形を見つけるためのもので、ログやレスポンスを検索するときに通常必要なのはこれです。メールアドレスの完全な規格では、もっと多くの形が認められています。アドレスを検証するには、基本的な形を確認したうえで確認メールを送ってください。
テキストはサーバーに送信されますか?
いいえ。マッチングはブラウザ内、このページのバックグラウンドのworkerで行われ、何もアップロードされません。再読み込みしても消えないように、パターンとテキストは消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。