正規表現テスター

ブラウザ内で動作し、何もアップロードされません

JavaScriptの正規表現を自分のテキストで試せます。キャプチャグループと置換にも対応しています。

Test text

Type a pattern

Matches are listed here with their position and capture groups. Patterns use JavaScript's RegExp, as in browsers and Node.js; type them without the surrounding slashes.
Type a pattern
/gLn 1, Col 1

正規表現とは?

正規表現(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. 1スラッシュの間の入力欄にパターンを入力します。スラッシュ自体は入れません。Presets でパターンとサンプルテキストを読み込めます。
  2. 2ツールバーでフラグをオン・オフします。g グローバル、i 大文字・小文字を無視、m 複数行、s dotAll、u と v Unicodeモード、y sticky、d グループのインデックスです。フラグにマウスを重ねると説明が表示されます。
  3. 3検索したいテキストを Test text に貼り付けるか、ファイルをドロップします。マッチは入力に合わせてハイライトされ、行、列、キャプチャグループとともに Matches に一覧表示されます。
  4. 4マッチをクリックするか、パターンの入力欄でEnter(ほかの場所ではF7)を押すと、テキスト内でそのマッチが選択され、グループがハイライトされます。Shift+Enter または Shift+F7 で前に戻ります。
  5. 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 は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。