入出力データはサーバーに送信されず、どこにも保存されません。すべての処理はブラウザ上で完結します。

正規表現テスター|マッチ・置換・解説表示

よく使うパターン クリックでパターンとサンプル文字列を読み込み
フラグ
マッチ結果 0 件のマッチ
マッチなし
パターン解説
パターンを入力すると解説が表示されます
クイックリファレンス
コードスニペット
パターンを入力するとコードが生成されます

使い方


正規表現パターンとフラグ(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プロパティエスケープを使用してください。