正規表現テスター|マッチ・置換・解説表示
使い方
正規表現パターンとフラグ(g: グローバル、i: 大文字小文字無視、m: 複数行、s: dotAll、u: Unicode)を入力します。テスト文字列を入力すると、マッチ結果がリアルタイムでハイライト表示されます。置換タブで文字列置換、下方にパターン解説・コードスニペット・クイックリファレンスもあります。
正規表現フラグ
g(グローバル)は最初のマッチだけでなく全マッチを検出。i(大文字小文字無視)は文字の大小を無視。m(複数行)は^と$が行の境界にマッチ。s(dotAll)は.が改行にもマッチ。u(Unicode)は完全なUnicodeマッチングを有効化。d(hasIndices)はキャプチャグループの開始・終了位置を提供。
活用シーン
- フォームのバリデーション — メールアドレス、電話番号、郵便番号などの入力チェック
- ログ解析 — エラーメッセージ、IPアドレス、タイムスタンプの抽出
- テキスト置換 — 全角・半角の統一、不要な空白の削除、フォーマットの一括変換
- スクレイピング — HTMLから特定のパターンを抽出(簡易な用途のみ。複雑な構造は専用パーサー推奨)
- 検索とリファクタリング — エディタのプロジェクト全体検索で柔軟なパターンマッチング
よくある罠
- カタストロフィック・バックトラッキング — `(a+)+` のような入れ子の量指定子は、入力長に対して指数時間かかることがあり、ReDoS(正規表現サービス拒否攻撃)の原因になります
- 貪欲マッチと最短一致 — `.*` はデフォルトで貪欲(できるだけ長く)。`.*?` で最短一致に。HTMLタグの抽出などで挙動の違いに注意
- ロケールと Unicode — `\w` は ASCII の英数字 + アンダースコアのみで、日本語や絵文字を含みません。Unicode 文字には `u` フラグと `\p{...}` プロパティを使用
- 言語による方言 — JavaScript、Python、PCRE、Java で対応する機能や記法が微妙に異なります(後読みのサポート、再帰、条件分岐など)
- アンカーの誤用 — `^` と `$` は `m` フラグなしでは文字列全体の先頭・末尾にしかマッチしません。各行の境界には `m` フラグが必要
プライバシー
すべての正規表現評価はJavaScriptのRegExpエンジンを使用してブラウザ内で完結します。パターンやテスト文字列がサーバーに送信・保存・記録されることは一切ありません。
よくある質問
このツールはどの正規表現エンジンを使っていますか?
ブラウザ標準のJavaScript RegExpエンジンを使用しています。そのため後読みやUnicodeプロパティ(\p{...})などJavaScriptの仕様に従い、Python・PCRE・Javaとは対応機能や記法が一部異なります。コードスニペットは各言語向けに生成されますが、マッチ判定自体はJavaScriptの挙動になります。
パターンやテスト文字列はサーバーに送信されますか?
いいえ。マッチ・置換・解説のすべてがブラウザ内のRegExpエンジンで完結します。本番ログや個人情報を含むテスト文字列を貼り付けても、サーバーへの送信・保存・記録は一切ありません。
g・i・m・s・u フラグはどう使い分けますか?
g(グローバル)は全マッチを検出、i は大文字小文字を無視、m は ^ と $ を各行の境界にマッチさせ、s は . が改行にもマッチするようにし、u は完全なUnicodeマッチングを有効化します。複数のフラグは同時に指定できます。
ブラウザが固まってしまうことがあるのはなぜですか?
`(a+)+` のような入れ子の量指定子はカタストロフィック・バックトラッキング(ReDoS)を引き起こし、特定の入力で指数的に時間がかかることがあります。処理はブラウザ内で実行されるため、こうしたパターンはタブの応答を一時的に止める可能性があります。
`\w` が日本語の文字にマッチしないのはなぜですか?
`\w` は ASCII の英数字とアンダースコアのみにマッチする仕様で、日本語や絵文字は含みません。これらの文字を扱うには `u` フラグを付け、`\p{L}`(任意の文字)などのUnicodeプロパティエスケープを使用してください。