正規表現テスター
すべてのフラグ(g i m s u y d)に対応し、JavaScript の正規表現をリアルタイムでテスト。一致のハイライト、キャプチャ・名前付きグループ、インデックス、置換プレビューを表示。
ブラウザの JavaScript(ECMAScript)正規表現エンジンをバックグラウンドの Worker で実行します。PCRE や Python の強欲な量指定子やインラインの (?i) 修飾子などは使えない場合があります。
正規表現テスターとは?
入力しながら、JavaScript の正規表現をテキストに対してテストします。一致はハイライトされ、表にはすべての一致が位置とともに表示されます。番号付きと名前付きのキャプチャグループ(d フラグではグループのインデックスも)を確認でき、任意の置換プレビューで String.replace の結果もわかります。パターンはバックグラウンドの Worker で実行され、1.5秒後に停止されるため、壊滅的なパターンでもページがフリーズすることはありません。
正規表現テスターの使い方
- 正規表現にパターンを(スラッシュなしで)入力します。
- 必要なフラグ(g、i、m、s、u、y、d)にチェックします。
- 検索するテキストをテスト文字列に貼り付けます。一致は自動的に更新されます。
- 一致部分を置換…にチェックして、置換文字列($1、$<name>、$& など)を入力すると、結果をプレビューできます。
例
Pattern (?<y>\d{4})-(\d{2}) with flags g, text "a 2024-05 b 1999-12", replacement $2/$<y> 2 match(es) · replaced: a 05/2024 b 12/1999
正規表現テスターを使うべき場面
JavaScript、TypeScript、Node.js の正規表現、検証ルール、検索と置換の作成とデバッグに使えます。他のエンジン(PCRE、Python、Java、.NET、POSIX)は構文や機能が異なります。たとえば強欲な量指定子(所有量指定子)、(?i) のようなインライン修飾子、\A/\Z のアンカーは使えないため、それらを対象にする場合は、そちらでもテストしてください。
正規表現テスターの仕組み
パターンは Web Worker 内で new RegExp(pattern, flags) によりコンパイルされます。g または y がある場合、ツールは exec() をループして最大1,000件の一致を集めます(空の一致は、無限ループを避けるため1コードポイントずつ進みます)。ない場合は、JavaScript とまったく同じく最初の一致だけを報告します。各一致は、開始と終了のインデックス、キャプチャグループ、名前付きグループ、d フラグではすべてのグループの indices を記録します。置換プレビューでは text.replace(regex, replacement) を実行します。Worker が1,500ミリ秒以内に応答しない場合は終了され、タイムアウトのメッセージが表示されます。
一般的な使用例
- フォーム入力の検証パターンをデバッグする
- 名前付きキャプチャグループでデータを抽出する
- ファイルに実行する前に検索と置換をプレビューする
- m、s、u などのフラグが一致をどう変えるか学ぶ
- 壊滅的なバックトラックがないかパターンを確認する
よくある質問
正規表現が最初の一致しか見つけないのはなぜですか?
g(グローバル)フラグがないと、JavaScript は最初の一致で止まります。すべての一致を一覧にするには g にチェックしてください。
d フラグは何をしますか?
各一致に indices を追加し、すべてのキャプチャグループの開始位置と終了位置を提供します。ツールは、それを各グループの横に表示します。
(a+)+$ のような壊滅的なパターンではどうなりますか?
それを実行している Worker が1.5秒後に終了され、タブがフリーズする代わりにタイムアウトのメッセージが表示されます。
PCRE や Python の正規表現と互換性がありますか?
基本的な構文はほぼ互換ですが、完全ではありません。お使いのブラウザの ECMAScript エンジンを使います。