正規表現テスター
正規表現テスター
正規表現のリアルタイムマッチングテストに対応。フラグ制御、キャプチャグループ解析、名前付きグループ、即時置換プレビューを提供。パフォーマンスリスク検出とタイムアウト保護を搭載、パターン検証・テキスト抽出・一括置換に最適。
かんたんスタート
よくある利用シーン
ログやテキストから ID、電子メール、日付、またはカスタム トークンを抽出します。
コードに統合する前に、ユーザー入力形式を検証します。
キャプチャ グループと名前付きグループを使用してコンテンツをバッチ置換します。
使い方のヒント
制限事項と互換性
プライバシーとセキュリティ
よくある質問
正規表現(Regular Expression、略称 regex)は、テキストパターンを特定の構文で記述するツールです。「高度な検索」と考えてください——固定の単語ではなく、あるルールに合致するすべてのテキストを検索します。\n\n例えば \\d{4}-\\d{2}-\\d{2} はすべての「年-月-日」形式の日付にマッチし、[\\w.]+@[\\w.]+ はメールアドレスにマッチします。正規表現はテキスト検索・抽出、形式検証、一括置換に広く使われています。\n\nほぼすべてのプログラミング言語(JavaScript、Python、Java、Go など)と多くのツール(VS Code、grep、sed)が正規表現をサポートしています。本ツールは JavaScript の RegExp エンジンを使用しています。
JavaScript の正規表現はデフォルトで最初のマッチのみを返します。これは言語仕様の動作であり、ツールの制限ではありません。フラグバーの g をクリックしてグローバル検索を有効にしてください。\n\ng と y の相互作用にご注意ください:g はテキスト全体をスキャンしますが、y(スティッキー)は前回のマッチの直後から開始することを要求します。通常は g のみで十分です。
主な原因は4つ:\n\n1. 括弧の不一致:( に対応する ) が必要、[ に対応する ] が必要。\n2. 量指定子の位置エラー:*、+、?、{n} は量化可能な要素の後に置く必要があります。*+ や ?* は不正です(*? などの怠惰修飾を除く)。\n3. エスケープ不完全:末尾の単独の \\ は不正です。\n4. Unicode プロパティには u フラグが必要:\\p{L} などは u フラグなしではエラーになります。
JavaScript の String.prototype.replace() で定義された置換参照構文です:\n\n- $1〜$99:n 番目のキャプチャグループの内容\n- $&:マッチ全体\n- $`:マッチ位置より前のテキスト\n- $':マッチ位置より後のテキスト\n- ${name}:名前付きグループの内容\n\n例えば (\\w+)\\s(\\w+) で「hello world」にマッチし、$2-$1 で置換すると「world-hello」になります。リテラルの $ が必要な場合は $$ と書きます。
タイムアウトのほぼすべてが「壊滅的バックトラック」が原因です。ネストした量指定子(例:(a+)+b)があると、エンジンは指数関数的な組み合わせを試行します。\n\n危険なパターン例:(a+)+、(.*?)*、(.+)+$ など。対処法:\n1. . の代わりに [^\\s]+ など正確な文字クラスを使用\n2. ネストした量指定子を避ける:(a+)+ → a+\n3. 重複する選択パスを減らす\n\nパターン調整後、「リトライ」ボタンで再テスト。4秒のタイムアウト保護があります。
言語ごとの正規表現エンジンには3つの主な差異があります:\n\n1. 構文サポート範囲:JavaScript は PCRE の再帰 (?R)、条件分岐、アトミックグループをサポートしていません。\n2. Unicode の扱い:Python 3 はデフォルトで Unicode として \\w、\\d を処理しますが、JavaScript は ASCII デフォルトです(u フラグが必要)。\n3. 改行の扱い:Python の . はデフォルトで \\n にマッチしません(JavaScript と同じ)。Java の Pattern.DOTALL は JavaScript の s フラグと同じ動作です。\n\n本ツールでロジック確認後、ターゲット言語のエンジンで最終検証することをお勧めします。