本文へスキップ
AZ Tools

正規表現テスター

正規表現を書き、フラグを切り替えれば、入力するそばからテスト文字列の全一致がハイライトされます。一致ごとにキャプチャグループが並び、置換のプレビューが横で走るので、パターンが何を見つけ、何を生み出すのかを同時に確認できます。エンジンはブラウザー自身の JavaScript RegExp です。つまりここで見えるものが実際のコードの挙動そのものであり、JavaScript が PCRE や Python、Go と異なる箇所も含めて一致します。どこにも送信されません。パターンとテストデータはページ内に留まり、デバッグ対象が実データであるときこれは重要です。

フラグ
マッチ2 件
Contact me at jane@example.com or john@test.io for details.
  • #1 @14jane@example.com
  • #2 @34john@test.io
置換プレビュー
Contact me at [redacted] or [redacted] for details.

使い方

  1. 正規表現パターンを入力します(区切り文字なし)。
  2. フラグを切り替え: g(グローバル)、i(大文字小文字無視)、m(複数行)、s(dotall)、u(Unicode)。
  3. テスト文字列を入力 / 貼り付けるとマッチが強調されます。
  4. 置換文字列を入力して結果をプレビュー。

よくある質問

どの正規表現方言?
JavaScript (ECMAScript) 正規表現。最新ブラウザでは後読み、名前付きグループ、Unicode プロパティエスケープも対応。
置換でキャプチャを参照するには?
$1, $2、マッチ全体は $&、名前付きグループは $<name> を使います。
マッチ上限は?
UI 応答性のため最大 10,000 回反復まで捕捉し、リスト表示は 50 件まで。
データは送信される?
いいえ。パターンとテスト文字列はブラウザ内のみで実行され、自動保存はローカルストレージのみに保存されます。
パターンを入れるとページが固まるのはなぜ?
ほぼ確実に破滅的バックトラッキングです。(a+)+b のように量指定子を入れ子にすると、一致が無いと結論づけるまでに入力を分割する組み合わせを指数的に試すことになります。対処は内側を曖昧でなくすることで、たいていは貪欲な .* を、区切り文字と重なりえない否定文字クラスに置き換えます。
グローバル (g) フラグは実際に何を変えますか?
g が無ければ最初の結果でマッチは止まります。g があれば文字列全体へ探索が続き、一致リストが一つより長くなるのはこのためです。同時に実際のコードでは正規表現が状態を持つようになります — どこで止まったかを覚えているからです。ループで使い回したパターンが一つ飛ばしに見える、よくある原因がこれです。
複数行にまたがって一致させるには?
別々の二つのフラグが関わり、混同しやすいところです。multiline はアンカーの意味を変え、^ と $ が文字列の両端だけでなくすべての改行でも一致するようにします。dotAll はドットが何に一致するかを変え、改行も含められるようにします。パターンが1行目の終わりで止まるなら、たいてい必要なのは dotAll のほうです。

このテーマのガイド

関連ツール