リアルタイム正規表現チェッカー

JavaScriptのRegExpエンジンを利用して、入力したパターンのマッチ結果を即座にハイライト表示します。

JavaScript環境に完全対応したテスト機能

本ツールは、ブラウザに内蔵されているJavaScriptのRegExpエンジンを直接利用して正規表現の評価を行います。そのため、ここでテストしたパターンは、実際のJavaScriptコード(Node.jsやフロントエンドのスクリプト)に組み込んだ際と全く同じ挙動を示します。

入力したパターンやテスト文字列を変更するたびにリアルタイムでマッチング処理が行われ、該当する部分がハイライトされるため、複雑な条件式のデバッグや動作確認がスムーズに行えます。

各種フラグとキャプチャグループの確認

正規表現の動作を微調整するためのフラグ(グローバル検索のg、大文字・小文字を区別しないi、複数行モードのm、ドットオールモードのs)に対応しています。フラグを切り替えることで、マッチする範囲がどのように変化するかを即座に視覚化できます。

また、丸括弧を用いたキャプチャグループの抽出結果も一覧で表示されるため、特定の部分文字列だけを正確に抜き出せているかどうかの検証にも最適です。

安全なクライアントサイド処理と注意点

入力された正規表現パターンやテスト用のテキストデータは、すべてユーザーのブラウザ上(クライアントサイド)でのみ処理されます。外部のサーバーにデータが送信されることは一切ないため、機密情報を含むログデータや個人情報のマスキング処理のテストにも安全に利用できます。

ただし、ネストされた量指定子など、バックトラックが指数関数的に増加するような書き方(ReDoSを引き起こすパターン)を入力すると、ブラウザのタブがフリーズする可能性があるため注意が必要です。

よくある質問

最短一致(非貪欲マッチ)にするにはどうすればよいですか?

正規表現の量指定子(<code>*</code>や<code>+</code>など)の直後にクエスチョンマーク(<code>?</code>)を付与することで、最短一致になります。例えば、<code>a+</code>を<code>a+?</code>に変更すると、条件を満たす最小限の文字数でマッチが終了します。

複数行にまたがってマッチしないのはなぜですか?

デフォルトでは、ドット(<code>.</code>)は改行文字にマッチしないためです。改行を含むテキスト全体を対象にする場合は、<code>s</code>フラグ(dotAll)を有効にするか、<code>[\s\S]</code>のような文字クラスを使用してください。

特定のパターンをテストするとブラウザがフリーズするのはなぜですか?

「破滅的なバックトラック(Catastrophic Backtracking)」が発生している可能性があります。ネストされた繰り返し処理などでマッチに失敗した場合、正規表現エンジンが全ての組み合わせを試行しようとして計算量が爆発し、ブラウザの処理が停止することがあります。

PythonやGoなど、他の言語の正規表現機能はテストできますか?

本ツールはJavaScriptのRegExpエンジンを利用しているため、JavaScript固有の構文のみをサポートしています。Python(PCRE系)などの他言語特有の機能は利用できないためご注意ください。

ここでのテスト結果は、実際のJavaScriptコードでの実行結果と同じになりますか?

はい、同じになります。お使いのブラウザに内蔵されているJavaScriptエンジンを直接使用して評価を行うため、フロントエンドのスクリプトやNode.js環境での挙動と一致します。

ツールの不具合や改善案はありますか。 フィードバックを送る