正規表現テスター(JavaScript)

JavaScript の正規表現を、入力した文字列にその場で試せます。一致箇所とキャプチャグループ(番号付き・名前付き)をハイライトし、置換結果のプレビューや JavaScript・Python・PHP のコード例も表示します。

エンジン:ブラウザの JavaScript(ECMAScript)RegExp

PCRE(PHP)・Python・Java などの正規表現とは文法や動作が異なる部分があります。他の言語で使う場合は、その言語の環境でも確認してください。

フラグ

パターンを入力すると、一致した部分がここに表示されます。

使い方

  1. 「正規表現(パターン)」に / を付けずにパターンを入力し、g・i・m などのフラグを選びます。
  2. 「テスト文字列」に検索対象の文字列を入力すると、一致した部分がハイライトされ、件数・位置・グループの一覧が表示されます。
  3. 置換を試すには「置換プレビューを表示」をオンにして置換文字列($1、$<name>、$& など)を入力します。
  4. 「コードで使う」で JavaScript・Python・PHP を選ぶと、そのパターンを使うコード例をコピーできます。
  5. 使い方の例を見たいときは「サンプル」から日付・メールアドレス・URL などを選びます。

注意事項

  • エンジンはブラウザの JavaScript(ECMAScript)の RegExp です。PCRE(PHP)・Python・Java・.NET などとは文法や動作が異なる部分があり、ここでの結果が他の言語で同じになるとは限りません。
  • v フラグはブラウザが対応している場合だけ表示します。
  • 1.5秒以内に終わらない検索は停止します((a+)+$ のようなパターンで起きるバックトラッキングの爆発対策)。Safari(JavaScriptCore)は、このような検索をエンジン自身が途中で打ち切り「一致なし」と返すことがあります。
  • テスト文字列は20万文字まで、一致の取得は1万件まで、一覧は先頭200件、ハイライトは先頭1,000件までです。
  • 位置(インデックス)は JavaScript と同じ UTF-16 の単位で数えます。絵文字などは2と数えることがあります。
  • コード例は出発点です。Python・PHP 版は名前付きグループなどの書き方を変換していますが、すべての違いを変換するものではありません。

計算・変換の仕組み

検索はページとは別の Web Worker の中で実行します。時間がかかりすぎた場合は Worker ごと停止するので、ページが固まりません。「中止」でいつでも止められます。

g フラグがあるときはすべての一致を、ないときは最初の一致だけを探します。空文字に一致した場合は1文字(u・v フラグでは1コードポイント)進めて続けます。

グループの位置は d フラグ(hasIndices)で取得し、一致箇所の中に入れ子にしてハイライトします。HTML として挿入せず、文字列はすべてテキストとして表示します。

よくある質問

PHP や Python の正規表現と同じ結果になりますか?

同じになるとは限りません。このツールはブラウザの JavaScript エンジンで動かしています。基本的な書き方は共通ですが、後読み、Unicode の扱い、$ の意味などに違いがあります。使う言語の環境でも確認してください。

入力したパターンや文字列は送信されますか?

いいえ。すべてブラウザ内で処理し、送信・保存はしません。

「停止しました」と表示されるのはなぜですか?

(a+)+$ のように量指定子が入れ子になったパターンは、一致しない文字列に対して処理時間が爆発的に増えることがあります(カタストロフィック・バックトラッキング)。量指定子の入れ子をなくすなど、パターンを見直してください。

最終更新日: