正規表現テスター / エディター / マッチビジュアライザー

正規表現のテスト、可視化、置換、解説を行います。 すべてブラウザ内で処理されます

⚙ エンジン: JavaScript RegExp
パターン
フラグ:
挿入:
サンプル:
テストテキスト 0 文字 · 0 行
ハイライト表示
マッチ: 0
時間:
エンジン: JS RegExp
マッチ一覧
# マッチ 開始位置 終了位置 長さ グループ
キャプチャグループ
置換構文: $1 $2 キャプチャグループ · $& マッチ全体 · $` マッチ前 · $' マッチ後 · $$ リテラル $ · $<name> 名前付きグループ
置換文字列
元テキスト
結果
上に正規表現パターンを入力すると、人間が読める解説を表示します。

例をクリックすると、テストタブに読み込まれ自動実行されます。

正規表現のテスト、マッチ、置換、パターン分析はすべてブラウザ内で処理されます。テキストやパターンがサーバーに送信されることはありません。

Tips

自動実行で即座にフィードバック

自動実行を有効にすると、入力に合わせて結果がリアルタイムで更新されます。UIの応答性を保つため入力をデバウンスします。非常に大きなテキストではフリーズ防止のため自動実行が自動的に無効になります。

キャプチャグループを理解する

括弧 () はキャプチャグループを作成します。テーブル内のマッチをクリックするとグループが表示されます。名前付きグループ (?<name>...) により正規表現が読みやすくなり、$<name> で置換も簡単になります。

壊滅的バックトラッキングの回避

(a+)+ や (a|a)*b のようなネストした量指定子は指数関数的な実行時間を引き起こす可能性があります。パターンはシンプルに保ち、可能であればアトミック構造を使い、エッジケースの入力でテストしてください。

JavaScriptエンジンの違い

このツールはJavaScript RegExpを使用しています。所有量指定子やアトミックグループなどの一部の機能は利用できません。後読みにはモダンブラウザが必要です。Python、PCRE、.NET の正規表現とは動作が異なる場合があります。

よくある使い方

📝

フォームバリデーション

フロントエンドやバックエンドのバリデーションロジックに実装する前に、メール、電話番号、日付、パスワードのパターンをテストできます。

📊

ログ解析

名前付きキャプチャグループを使用してログファイルからタイムスタンプ、エラーレベル、メッセージを抽出できます。マッチをJSONとしてコピーして後続処理に活用できます。

🔍

データ抽出

非構造化テキストからURL、IPアドレス、UUID、16進カラーコードを抽出できます。マッチテーブルにすべての出現箇所と位置情報が表示されます。

⚙️

コードリファクタリング

置換タブを使って、IDEに適用する前に検索・置換パターンをテストできます。$1 や $<name> などのキャプチャグループ参照をサポートしています。

📚

正規表現の学習

解説タブは任意のパターンを分かりやすいトークンに分解します。チートシートと例を組み合わせることで、完全な学習環境となります。

よくある質問

正規表現とは何ですか?
正規表現(regex)は文字列のセットを記述するパターンです。テキストの検索、マッチ、操作に使用されます。例えば \d+ は1つ以上の数字にマッチします。
このツールはJavaScriptの正規表現を使用していますか?
はい。このツールはJavaScript組み込みのRegExpエンジンを使用しています。一部の構文はPCRE(PHP)、Python re、.NET、Java の正規表現と異なる場合があります。使用エンジンは常に表示されます。
ここでは動作する正規表現がPythonでは動かないのはなぜですか?
JavaScriptとPythonの正規表現エンジンにはいくつかの違いがあります。例えば、JSの後読みは一部のブラウザで固定長である必要があり、Unicodeでの \b の動作が異なり、所有量指定子はJSでは利用できません。
グローバル(g)フラグは何をしますか?
グローバルフラグがない場合、最初のマッチのみが返されます。gを有効にすると、テキスト全体のすべての重複しないマッチが検索され一覧表示されます。
マッチが1つしか表示されないのはなぜですか?
グローバル(g)フラグが有効になっていない可能性があります。フラグ行のgボタンをクリックして有効にし、すべてのマッチを検索してください。
キャプチャグループとは何ですか?
正規表現中の括弧 () はマッチしたテキストを記憶するキャプチャグループを作成します。グループ1は最初の括弧、グループ2は2番目、以降同様です。名前付きグループは (?<name>...) 構文を使用します。
$1のような置換はどのように機能しますか?
置換文字列において、$1は最初のキャプチャグループにマッチしたテキスト、$2は2番目を参照します。$&はマッチ全体です。$<name>は名前付きグループを参照します。
このツールはデータをアップロードしますか?
いいえ。正規表現のテスト、マッチ、置換はすべてJavaScriptを使用してブラウザ内で完全に行われます。テキストやパターンがデバイスの外に出ることはありません。
パターンが遅いのはなぜですか?
一部のパターンは壊滅的バックトラッキング(特定の入力に対する指数関数的な実行時間)を引き起こします。(a+)+ のようなネストした量指定子を避け、.* の代わりに具体的な文字クラスを使用し、大きな入力は慎重にテストしてください。
壊滅的バックトラッキングとは何ですか?
正規表現エンジンがマッチを見つけるために多くの順列を試行して失敗すると、実行時間が指数関数的に増大する場合があります。これは通常、入力"aaaaaaaac"に対する (a+)+b のような曖昧なパターンで発生します。
名前付きグループをテストできますか?
はい。パターン内で (?<name>...) 構文を使用してください。名前付きグループはキャプチャグループパネルに表示され、$<name> で置換に参照できます。
このツールは後読みをサポートしていますか?
はい、モダンブラウザでサポートされています。後読み (?<=...) と (?<!...) は Chrome 62+、Firefox 78+、Safari 16.4+ で利用可能です。古いブラウザではエラーが発生する場合があります。