本文へスキップ

正規表現テスター

Regex Tester

正規表現をサンプルの文章に当て、一致箇所をその場で光らせてキャプチャグループも並べます。

正規表現をサンプルのテキストに対して実行し、一致したものすべてを、その位置、キャプチャグループ、そして置換したときに出る結果とともに表示します。ブラウザ自身のエンジンなので、ここで起きることが、あなたのJavaScriptで起きることです。

🔒 ブラウザの中だけで動きますregextestpattern
表示

パターン

//g

文字列のどこでも一致可能、キャプチャグループ 2 個。

当てる相手

一致したものをすべて挙げます。`g` フラグがなければ `String.replace` は最初のひとつしか使いません。

0件一致

所要時間

0.0 ms

ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org

置換

`$1`、`$<name>`、`$&`、`` $` ``、`$'`、`$$` はすべて展開されます。`String.replace` が展開するのとまったく同じです。

使い方

  1. パターンを書き、フラグを立てます

    フラグのボタンは、効いてくる6つです。global、ignore case、multiline、dotAll、unicode、stickyです。上に出るリテラルが、そのままコードに貼り付けられるものです。

  2. 実際に手元にあるテキストを貼り付けます

    一致した箇所はその場で強調され、隣り合ったものを見分けられるように色が交互になります。表には、グループごとの値とともに並びます。一致に関わらなかったグループも含めてです。

  3. 置換を試します

    `$1`、`$<name>`、`$&`、`` $` ``、`$'`、`$$`は、すべて`String.replace`が展開するのとまったく同じように展開されます。だからプレビューが実際の出力です。

よくある質問

`g`フラグが無いという警告が出るのはなぜですか

一覧には一致したものがすべて出ますが、`g`が無ければコードのほうはそうなりません。`String.replace`は最初の1つしか変えませんし、`matchAll`ははっきり例外を投げます。ここで見えるものと、プログラムが実際にすることの差が、それです。

これはPythonやPCREと同じエンジンですか

違います。JavaScriptのものです。後読み、名前付きのグループ、`\p{…}`はここで使えますが、アトミックグループ、絶対最大量指定子、再帰、インラインのフラグ指定は使えませんし、文字クラスの振る舞いもところどころ違います。ここで動くパターンが、ほかの場所では失敗することがあります。

パターンを入れるとページが固まります

固まらないはずです。破滅的なバックトラックをするパターンは、ほかの方法では止められないので、まさにそのためにマッチングはワーカーで走ります。時間がかかりすぎれば実行を打ち切って報告します。それ自体が役に立つ合図でもあります。ここでそうなるパターンは、あなたのサーバーでもそうなります。

`.`が改行に一致しないのはなぜですか

そのために`s`(dotAll)があるからです。それが無ければ`.`は行の終端以外のすべてに一致します。そして`m`(multiline)はまた別のもので、変えるのは`^`と`$`の意味であって、`.`が何に一致するかではありません。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。