正規表現テスター
正規表現をリアルタイムでテスト:マッチ強調・グループ・置換
\d \w \s数字・単語文字・空白^ $ \b先頭・末尾・単語境界* + ? {n,m}0+・1+・省略可・範囲(…) (?:…) (?<name>…)キャプチャ・非キャプチャ・名前付き[abc] [^abc] [a-z]いずれか・除外・範囲a|b (?=…) (?!…)選択・先読み制御された「破滅的なバックトラッキング」
(a+)+$ のような入れ子の量指定子は、マッチャーが指数関数的に多くの経路を探索することを引き起こす可能性があります——いわゆる ReDoS(正規表現によるサービス拒否)の典型的な罠です:
- このテスターは、ユーザーのパターンをステップ数制限付きのワーカー内にラップします。そのため、異常に長時間実行されるマッチングはタブのフリーズを防ぎ、中断されて報告されます。
- 中断が発生した場合、そのパターンは本番環境でも危険です——サーバー側のタイムアウト設定をいくら強化しても、二次的(quadratic)なエンジンループを根本的に解決することはできません。
- 有効な修正策の例:内側のグループを曖昧さのない形にする、両端をアンカーで固定する、貪欲な入れ子を文字クラスに置き換えるなどです。
このテスターがパターンを安全に実行する仕組み
マッチのリアルタイム表示
パターン・テスト文字列・置換文字列は入力と同時に更新され、マッチは交互の色でハイライトされ、件数も更新。置換プレビューは $1 や $<name> の名前付きグループ構文に対応します。
位置付きのグループ表示
各マッチは番号付き・名前付きキャプチャグループとその値・文字位置に展開されるので、本番投入前にパターンのどの部分が何をキャプチャしたかが一目で分かります。
フラグ・ライブラリ・リファレンス
g・i・m・s・u・y のフラグはワンクリック、メール・URL・IPv4・日付・16進カラー・電話番号の6つの定型パターン、アンカー・量指定子・グループ・先読みを解説する構文リファレンスを完備。
よくある質問
どの正規表現の方言を使いますか?
ブラウザ内蔵の JavaScript(ECMAScript)エンジンです。構文の大半は PCRE と共通ですが一部異なります(絶対最大量指定子がない、後読みは新しいブラウザが必要など)。ここでテストしたパターンは JS コードでも同じ挙動になります。
テキストはどこかに送信されますか?
いいえ。マッチ・グループ化・置換はすべてブラウザのネイティブ RegExp でローカルに実行され、パターンやテストデータはページから出ません。オフラインでも動作します。
正規表現でページが固まることはありますか?
病的なパターン(壊滅的バックトラック)は遅くなり得ますが、影響はご自身のタブだけです。ゼロ幅マッチを進め、結果を 1 万件で打ち切って UI の応答性を保ちます。長い入力では (a+)+ のような入れ子量指定子を避け、具体的なパターンを推奨します。
なぜ私のパターンは一部の入力ではフリーズするのに、他の入力では問題なく動作するのですか?
バックトラッキングのコストは、文字列長だけでなく入力の形状にも依存します。たとえば <code>(a+)+b</code> に対して <code>aaaa...b</code> をマッチさせると爆発的に遅くなりますが、<code>aab</code> なら即座に終了します。攻撃者はこうした悪意のある入力を巧みに作成するため、ユーザ向けに公開する前に、同一文字を長く連続させたテストケースで正規表現を検証してください。
関連ツール
正規表現テスターとは?
正規表現はテキストの検索・置換に欠かせない強力なツールですが、同時にプログラミングの中でも特に間違いやすいものです。バックスラッシュを1つ間違えるだけでマッチ結果が変わり、頭の中で考えた通りに動くことは実際のデータ相手だと案外ありません。このテスターは、パターンが実際に何をしているかをリアルタイムで見せてくれます。テスト文字列内のすべてのマッチが即座にハイライトされ、番号付き・名前付きのキャプチャグループが位置情報付きで分解され、$1や$
このツールでできること
- 🔦 入力と同時にすべてのマッチをリアルタイムでハイライト
- 🧩 番号付き・名前付きキャプチャグループを位置付きで分解
- 🔁 $1 / $
構文による置換プレビュー - 🚩 g・i・m・s・u・yのフラグ対応
- 📚 メール・URL・IPv4・日付・カラー・電話のパターンライブラリ
- 📖 構文リファレンス表を内蔵
こんなときに役立つ
- フォーム欄のバリデーションパターンを書くとき
- マッチが多すぎる・少なすぎる原因を調べるとき
- キャプチャグループに依存するテキスト処理を組むとき
- コミュニティの既成パターンを本番に使う前に確認するとき
プライバシー:パターンとテスト文字列はすべてブラウザ内で評価され、アップロードや記録は行われません。無料で利用できます。