このツールについて
正規表現はテストコードのいたるところで使われます。ログ行のアサート、レスポンスからの ID 抽出、フォーマットの検証、レポート内の秘密情報のマスキングなどです。このテスターはブラウザ自身の JavaScript RegExp エンジンを使うため、結果は Playwright、Cypress、Jest、Node の動作と一致します。入力に合わせて一致箇所がハイライトされ、すべてのキャプチャグループ(番号付き・名前付き)が位置つきで一覧表示され、置換プレビューで String.replace の結果を確認できます。マッチングはバックグラウンドのワーカーで実行され、1.5 秒で停止されるため、壊滅的なバックトラッキングを起こすパターンでもページが固まることはありません。
使い方
- 前後のスラッシュを除いたパターンを入力し、必要なフラグ(g、i、m、s、u、y)を切り替えます。
- テスト文字列を貼り付けるか、QA パターンのいずれかをクリックしてパターンと対応するサンプルテキストを読み込みます。
- ハイライトされたテキストと一致表で、グループとインデックスを確認します。
- 「Replace preview」(置換プレビュー)を有効にすると、$1、$<name>、$& を使った置換を試せます。
正規表現テスター のよくある質問
ここで動くパターンは Java や Python でも動きますか?
ほとんどは動きますが、常にではありません。基本は共通ですが、名前付きグループは JavaScript と Java では (?<name>)、Python では (?P<name>) と書き、後読みの対応状況も異なり、s フラグと y フラグは JavaScript 固有です。高度なものは対象言語でテストしてください。
テスターがタイムアウトで止まったのはなぜですか?
(a+)+ や (.*)* のようにネストした量指定子を持つパターンは、ほぼ一致する入力に対して指数関数的な時間がかかることがあります。これを壊滅的なバックトラッキングと呼び、同じパターンでテスト実行やサーバーが停止することもあります(ReDoS)。内側の量指定子をより具体的にするか、ネストをなくしてください。
一致が 1 件しか表示されないのはなぜですか?
g(グローバル)フラグがないと、JavaScript の正規表現は最初の一致で止まります。すべての出現箇所を見つけるには g をオンにしてください。String.prototype.matchAll や replaceAll でも g フラグが必要です。