* 入力内容はサーバーに送信されません。すべての計算はブラウザ上で実行されます
正規表現パターンを入力して始めましょう

正規表現テスターとは?

正規表現テスターは、サンプルテキストに対して正規表現パターンをリアルタイムで構築・テストできるインタラクティブツールです。

入力すると、テストテキスト内の一致がハイライトされ、詳細な一致リストに各一致の位置、キャプチャグループ、長さが表示されます。

このツールはブラウザ上で完全に実行されます。データがサーバーに送信されることはありません。

主な機能

  • リアルタイムのマッチハイライト。見やすさのために交互の色でテストテキスト内の一致を視覚的に表示。
  • キャプチャグループの確認。名前付き・番号付きキャプチャグループを各一致で表示。
  • 置換プレビュー。$1、$&、'$<name>'の置換トークンに対応した正規表現ベースの検索・置換をテスト。
  • パターンの解説。正規表現のトークンレベルの内訳を表示(例: \d+ →「1回以上の数字」)。
  • 破壊的バックトラック保護。マッチングはタイムアウト付きのバックグラウンドスレッドで実行されるため、悪いパターンがページをフリーズさせることはありません。
  • プリセットライブラリ。メール、URL、IP、電話番号、パスワードなどの一般的なパターンでクイックスタート。

一般的なユースケース

  • 正規表現の学習。各トークンがマッチングにどう貢献するかを確認し、サンプルテキストで理解度をテスト。
  • デバッグ。既存の正規表現を貼り付けて実際のデータでテストし、期待通りにマッチするか確認。
  • データ抽出。キャプチャグループを使ってログファイル、CSV、構造化テキストから特定部分を抽出。
  • 検索と置換。コードに適用する前に複雑なテキスト変換をプレビュー。
  • バリデーション。メール、電話番号、URLなどのバリデーションパターンをエッジケースでテスト。

チートシート

トークン意味
文字クラス
\d任意の数字(0-9)123 → matches 1,2,3
\w任意の単語文字(a-z、A-Z、0-9、_)a1_ → matches a,1,_
\s任意の空白(スペース、タブ、改行)"a b" → space match
[...]カスタム文字クラス[aeiou] → vowels
[^...]否定文字クラス[^0-9] → non-digits
アンカーと境界
^文字列の先頭"^hello" → at start
$文字列の末尾"end$" → at end
\b単語境界"\bword\b" → word
\B非単語境界"\Bing\B" → inside
量指定子
*0回以上a* → "", a, aa, aaa
+1回以上a+ → a, aa, aaa
?0回または1回a? → "", a
{n}ちょうどn回a{3} → aaa
{n,}n回以上a{2,} → aa, aaa
{n,m}n回からm回a{2,4} → aa, aaa, aaaa
*?, +?, ??非貪欲バリアント(できるだけ少なくマッチ)"<.*?>" → shortest match
グループと先後読み
(...)キャプチャグループ(abc)+ → capture abc
(?:...)非キャプチャグループ(?:abc)+ → group w/o capture
(?<name>...)名前付きキャプチャグループ"(?<year>\d{4})"
(?=...)肯定先読みq(?=u) → q followed by u
(?!...)否定先読みq(?!u) → q not followed by u
(?<=...)肯定後読み"(?<=@)\w+"
(?<!...)否定後読み"(?<!@)\w+"
エスケープ
\n改行"line\n" → newline
\tタブ"col\t" → tab
\\バックスラッシュそのもの"c:\\path"
\.ドットそのもの"end\." → literal dot
\/スラッシュそのもの"path\/to\/file"

制限事項

  • JavaScriptの正規表現のみ対応。ブラウザの組み込み正規表現エンジンを使用します。PCRE、Pythonなどの他の正規表現エンジンとは動作が異なる場合があります。
  • 古いブラウザでは後読みに非対応。後読みアサーション(?<=...)にはES2018+が必要です。Safariは2023年に対応しました。
  • マッチの上限は1,000件。UIの応答性を保つため、最初の1,000件のマッチのみレンダリングされます。
  • キャプチャグループはテキスト内でハイライトされません。グループはマッチリストに表示され、ハイライトテキスト内には表示されません。