正規表現チェッカー
書いた正規表現が思った通りにマッチするか、置換の結果がどうなるかを、コードを書く前に確かめたいときに。入力するたびに結果が更新されます。
🔒 入力内容はお使いのブラウザ内だけで処理され、サーバーには送信されません。
よく使うパターン集(クリックで挿入)
| # | 位置 | マッチ | グループ |
|---|
使い方
- 「パターン」に正規表現を入力します。前後の
/は不要です。フラグは下のチェックで選びます(gは既定でオン)。 - 「対象テキスト」にマッチさせたい文章を入れます。入力するたびに、マッチした箇所が色付きで表示され、下の一覧に位置とグループの内容が出ます。
- 置換を試したいときは「置換文字列」に入れます。
$1や$<name>で捕捉したグループを参照できます。置換後の全文が「置換プレビュー」に出ます。 - 書き方に迷ったら「よく使うパターン集」から選ぶと、パターンとフラグが入力されます。そのまま使うより、自分の用途に合わせて調整する出発点にしてください。
仕様
| 項目 | 扱い |
|---|---|
| エンジン | お使いのブラウザの JavaScript(ECMAScript)の正規表現。他の言語とは一部の記法が異なります |
| フラグ | g すべてのマッチ、i 大文字小文字を無視、m ^ $ を各行の先頭末尾に、s . を改行にも一致、u Unicode モード(絵文字や \p{...} を正しく扱う)、y 現在位置からのみ一致 |
| 位置 | 0 から数えた開始位置と終了位置(終了位置は含まない)。文字列の index と同じ数え方 |
| グループ | $1 $2 は番号付き、<name> は名前付きグループ (?<name>...) の内容。マッチしなかったグループは「(なし)」 |
| 空のマッチ | a* のように空文字にマッチする場合は、赤い縦線で位置を示し、無限ループにならないよう1文字ずつ進めます |
| 上限 | マッチは 10,000 件まで、一覧の表示は 500 件まで。ハイライトはすべて表示します |
| 危険なパターンの警告 | (a+)+ のような繰り返しの入れ子など、形から判定した目安です。実際の速度は処理時間の欄で確認できます |
| パターン集 | 日本の郵便番号・電話番号などは一般的な形式に合わせた簡易なもので、すべての実在する番号を厳密に判定するものではありません |
こんな時に
- フォームの入力チェックに使う正規表現が、正しい値を通し、間違った値をはじくか確かめたいとき
- ログファイルから日付や IP アドレスだけを抜き出すパターンを作るとき
- エディタの「正規表現で置換」を実行する前に、置換結果を全文で確認したいとき
(\d{4})-(\d{2})のようなグループが、どこに何を捕捉しているか目で見たいとき
注意
正規表現の実行はブラウザのメインスレッドで行うため、破滅的バックトラックを起こすパターンと長いテキストの組み合わせでは、ページが数秒間応答しなくなることがあります。警告が出たパターンは、短いテキストで試してから長いテキストに使ってください。
よくある質問
最初の1つしかマッチしません
g(グローバル)フラグがオフだと、最初のマッチだけを返します。すべてのマッチを見たいときは g をオンにしてください。置換も同様で、g がないと最初の1箇所しか置き換わりません。
他の言語(PHP、Python、Java)でも同じ結果になりますか?
このツールはブラウザの JavaScript エンジンで実行するため、JavaScript の正規表現の仕様に従います。基本的な記法は共通ですが、後読み (?<=...)、名前付きグループ (?<name>...)、Unicode プロパティ \p{...}(u フラグが必要)などは言語やバージョンによって対応が異なります。また、JavaScript にはない \A \Z、所有量指定子 ++、アトミックグループ (?>...) は使えません。
「破滅的バックトラックの可能性」という警告は何ですか?
(a+)+ や (\w+\s?)* のように、繰り返しの中に繰り返しがあるパターンは、マッチしない入力に対して処理時間が入力長の指数関数で増えることがあります(ReDoS)。この警告は形だけで判定した目安です。警告が出ても必ず遅いわけではありませんが、ユーザー入力に対して使うパターンなら、繰り返しの入れ子を避ける書き方を検討してください。
置換で $1 や名前付きグループを使えますか?
置換文字列では $1 $2(番号付きグループ)、$<name>(名前付きグループ)、$&(マッチ全体)、$$($ そのもの)が使えます。JavaScript の String.prototype.replace と同じ規則です。