DevFormatLab

正規表現テスター

リアルタイム照合

正規表現をリアルタイムでテスト。マッチのハイライト、キャプチャグループ、プリセット対応。

//
テスト文字列2
ハイライト
Sample dates: 2026-05-14, 2025-12-31, and not-a-date 99-99-99.
マッチ2
#1 @142026-05-14
#2 @262025-12-31

パターンとテストテキストはブラウザを離れません。

正規表現テスターとは?

正規表現テスターは、サンプルテキストに対してパターンをリアルタイムに構築・検証できるツールで、「アプリのコードを書き換えて → 再デプロイして → ログを見て一致したか確認する」というはるかに遅い試行錯誤ループを置き換えます。正規表現はテキスト処理の共通言語であり、JavaScript の RegExp、Python の re、Java の Pattern、Go の regexp、ripgrep、grep、sed、awk、Vim の検索、ほぼすべてのエディタの検索&置換 — どの実行環境にもなんらかの方言があります。正規表現を少しでも間違えるコスト(必要なエスケープを忘れる、g フラグを付け忘れる、欲張り量指定子を遅延量指定子にすべきところで使う)は、それが通してしまうバグそのもの:壊れたログパーサ、過敏なバリデータ、データ損失級の置換まで。 DevFormatLab の正規表現テスターは、キー入力ごとにブラウザ標準の JavaScript RegExp エンジンでテストテキストに対して評価するため、フロントエンドコードと完全に同じ結果が得られます。すべてのマッチがテストテキスト中にハイライトされ、各キャプチャグループ(名前付きグループ (?<name>...) を含む)が横並びに表示され、標準フラグ g・i・m・s・u・y もすべてサポート。組み込みのプリセットライブラリ(メールアドレス、URL、日本の郵便番号、ISO 8601 日付、IPv4、16 進カラー)が最頻出パターンの土台を即座に用意するので、ゼロから書くよりずっと現実的な出発点で反復できます。互換性メモは JavaScript / Java / Python の差異(可変長 lookbehind、Unicode プロパティエスケープ \p{Nd} や \p{Script=Hiragana}、名前付きグループの構文など)を指摘してくれるため、ローカルでは動くのにサーバランタイムで壊れるパターンを出荷せずに済みます。アップロードは一切なし — 正規表現もテストテキストもブラウザを離れないので、ログ行、顧客メール、機微 ID にも安心して使えます。

機能

  • 入力と同時にリアルタイムでマッチをハイライト(Run ボタン不要)
  • マッチごとのキャプチャグループ表示、名前付きグループ (?<name>...) にも対応
  • 標準フラグ全対応:g(global)・i(ignore case)・m(multiline)・s(dotAll)・u(Unicode)・y(sticky)
  • プリセット:メール、URL、日本の郵便番号、ISO 8601 日付、IPv4、16 進カラー
  • JavaScript / Java / Python の差異を示す互換性メモ
  • マッチ件数と各ヒットの 1 始まりインデックス
  • ブラウザ内のみ — パターンとテストテキストはデバイスを離れません

使い方

  1. 正規表現の入力欄にパターンを入力します(前後のスラッシュは不要 — /users\.\w+/ ではなく users\.\w+ と入力)。
  2. 必要に応じて flags 欄でフラグを追加:g で全マッチ(最初の 1 件ではなく)、i で大小文字無視、m で ^ と $ が各行にマッチ、s で . が改行にもマッチ、u で完全 Unicode。
  3. 右側のパネルにテスト文字列を貼り付けます — プリセット(Email、URL、日本の郵便番号など)をクリックすれば、動作するパターンとサンプルを同時に読み込めます。
  4. マッチはテストテキスト中にライブハイライトされ、右の Matches パネルが各ヒットを 1 始まりインデックスと全キャプチャグループ(名前付き含む)とともに一覧表示します。
  5. パターンが「Invalid regular expression」になった場合、ツールチップが原因を説明します(nothing to repeat、unterminated group、invalid escape など)— ページを離れずに修正できます。
  6. 出荷前に互換性メモを確認:JavaScript で動くパターンが Java や Python では異なる挙動になることがあります — 例:可変長 lookbehind、Unicode プロパティエスケープ。

よくある質問

なぜ最初の 1 件しかマッチしないのですか?

g(グローバル)フラグが付いていません。これがないと RegExp.exec / String.match は最初のヒットしか返しません。 // 誤り — "cat" を 1 度しか見つけない /cat/.test("cat cat cat") // 正しい — 全マッチを取得 "cat cat cat".match(/cat/g) // ["cat","cat","cat"] 本ツールではパターン横の flags 欄に g を入力してください。右側 Matches パネルが 1 始まりのインデックスで全件を表示します。

「Invalid regular expression: nothing to repeat」が出る

量指定子(* + ? {n})には対象が必要です。多くはグループ先頭の未エスケープなメタ文字が原因: /+1234/ ← + の前に対象がない /(?:)+/ ← 空グループの繰り返し /5{1,3+}/ ← 量指定子内の不要な + リテラルをエスケープ:/\+1234/ なら "+1234" にマッチします。電話番号風には /\+?\d{10,15}/ が便利。

複数行にまたがるマッチを行いたい

用途によりフラグが異なります: • m(multiline):^ と $ が各行の先頭/末尾にマッチ。/^ERROR/m など行単位の判定に。 • s(dotAll):. が \n にもマッチ。1 つのパターンが改行をまたぐとき、例:/<pre>(.*?)<\/pre>/s。 本ツールでは自由に組み合わせ可能。ログ解析では gms をよく使います。

\d が全角数字にマッチしないのはなぜ?

既定の \d は ASCII の 0-9 のみで、0-9 は含みません。u(Unicode)フラグと Unicode プロパティエスケープを使ってください: /[\d\p{Nd}]/gu // 12 も 12 もマッチ 本ツールは u をサポート。Java は (?U)、Python は標準 re ではなく regex パッケージが必要です — 互換性パネルに差異を表示します。

Safari / 旧 Node で lookbehind が動かない

可変長 lookbehind (?<=...) は V8 / SpiderMonkey では古くから動きますが、Safari < 16.4 と Node 8.x は未対応です。旧ランタイム対応が必要なら: • lookbehind を捕獲グループに置き換え:/(?<=USD )\d+/ → /USD (\d+)/ にして match[1] を読む。 • あるいは new RegExp を try/catch で囲み、失敗時は手動スキャンに切替。 本ツールは現在のブラウザでコンパイルするため、ここで失敗すれば本番でも失敗します — リリース前に捕獲グループ形に書き換えてください。

パターンとテストテキストはサーバーに送信されますか?

いいえ。パターンは new RegExp(...) でコンパイルされ、テストテキストへの実行も完全にブラウザ内で完結します。DevTools のネットワークタブを開いて Run を押しても、新規リクエストは 0 件です。既定では localStorage にも保存しません。

関連ツール

Canonical: https://devformatlab.com/ja/regex-tester