正規表現テスター
JavaScript の正規表現をライブテスト。マッチ、キャプチャグループ、置換結果を入力に応じて表示。
/
/
上に入力すると結果が表示されます。
上に入力すると結果が表示されます。
用途
正規表現は密度が高く、容赦のない表現言語です。実用に耐えるパターンを書く近道は反復作業です。パターンを書き、サンプルテキストを見て、マッチを確認し、調整する、その繰り返しです。本ツールはこのループをブラウザ内で提供し、JavaScript エンジンの RegExp をそのまま使い、キャプチャグループの中身や置換のプレビューも確認できます。パターンも入力もページの外には出ません。
使うべきタイミング
- ユーザー入力(メール風、電話番号風、郵便番号風など)の検証で、どの入力が通り、どれが落ちるかを正確に確認したいとき。
- ログ行のパース、フィールド抽出、ログフィルタの作成。
- 実コードベースに find-and-replace を流す前にパターンを下書きしたいとき。
- Stack Overflow からコピペした正規表現がうまく動かないときに、何が実際にマッチしているかを確認するとき。
よく使うパターン
\b\w+@\w+\.\w+\b— メール風^\s*$— 空白だけの行(mフラグと併用)(?<year>\d{4})-(?<month>\d{2})— 名前付きキャプチャ(?:.*)— 非キャプチャグループ(?=foo)/(?!foo)— 先読み/否定先読み
よくある注意点
- JavaScript は PCRE と同じではありません。
\Kや再帰パターンはなく、後読みが入ったのは ES2018 以降です。Perl、PHP、Python のパターンは調整が必要なことがあります。 gフラグなしでは最初のマッチしか得られません。 「全部見つける」ならg、行ごとのアンカーが要るならmも併用します。- greedy と lazy。
.*は最大一致、.*?は最小一致です。<b>hi</b> and <i>there</i>を 1 ブロックとマッチするか、2 ブロックに分けるかが変わります。 - アンカーは行か文字列か。 既定では
^と$は文字列の先頭・末尾です。mフラグで行ごとに切り替わります。 - 置換の特殊シーケンス。
$&はマッチ全体、$1、$2… はキャプチャグループ、$$はリテラルの$。これを忘れると「正規表現がドル記号を食う」現象に悩まされがちです。 - 真面目な用途で HTML を正規表現でパースしないこと。 入れ子タグ、コメント、CDATA は真のパーサーが必要です。一回限りのログスクレイピングや管理された入力では正規表現でも問題ありません。