正規表現テスター(JavaScript・マッチ箇所ハイライト/置換)

JavaScript(ECMAScript)の正規表現をブラウザ内でテスト。マッチ箇所のハイライト表示、インデックスやキャプチャグループの一覧、$1や$<name>を使った置換プレビューまで一度に確認でき、メール・IPv4などのプリセットも用意しています。

ハイライト(マッチ箇所を強調表示)

マッチ一覧(0 件)

置換プレビュー

この正規表現はJavaScript(ECMAScript)の構文・挙動で評価しています。PHP(PCRE)やPythonのreモジュールとは記法・挙動が一部異なります。処理はすべてブラウザ内で行われ、入力内容は送信されません。

使い方

  1. パターン欄に正規表現を入力し、必要なフラグ(g/i/m/s/u)にチェックを入れる。
  2. テスト文字列を貼り付けると、マッチ箇所が即座にハイライトされ、下にインデックスやキャプチャグループの一覧が表示される。
  3. 置換後の文字列欄に $1(番号付きグループ)や $<name>(名前付きグループ)を使うと、置換結果のプレビューも確認できる。
  4. よく使うパターンはプリセットボタン(メール・IPv4・日付・郵便番号)から呼び出せる。

仕組み・根拠

パターンの構文と挙動は、JavaScript(ECMAScript)の仕様であるECMA-262に定義された正規表現の実装(RegExp オブジェクト、String.prototype.replace)をそのままブラウザ上で使っています。g フラグを付けない場合、JavaScriptの仕様では最初にマッチした1件しか処理されません(一覧・置換ともに1件どまりになります)。これは省略ではなく、実際のJavaScriptの挙動を忠実に再現したものです。名前付きグループ((?<name>...))はES2018で追加された機能で、マッチ結果の groups プロパティから取得できます。

現場の落とし穴:入れ子の量指定子(例:(a+)+b)は、マッチに失敗する入力に対して指数関数的に時間がかかる「破滅的バックトラッキング」を起こすことがあります。短い入力では問題にならなくても、本番環境で長い文字列や悪意ある入力が来た瞬間にCPUを使い切って処理が固まる事故が実際に起きています。このツールにはタイムアウト処理を入れていないため、複雑なパターンを長い文字列で試すとブラウザが一時的に固まる可能性がある点に注意してください。対策としては、量指定子の入れ子を避ける、入力長に上限を設けるなどが挙げられます。

よくある質問

Q. PHPやPythonの正規表現と結果が違います。なぜですか?

A. 正規表現エンジンは言語によって細部の挙動が異なります。このツールはJavaScript(ECMA-262)準拠のため、PCRE(PHP)やPythonのreモジュールとは、後読み・Unicodeプロパティの扱いなどで差が出ることがあります。

Q. マッチが0件のときエラーになりますか?

A. なりません。「マッチなし」と表示されるだけで、パターン自体が不正な場合のみエラーメッセージを出します。

Q. 置換で $1 がそのまま出力されてしまいます。

A. キャプチャグループの数がパターンの () の数より少ない、またはパターン自体がマッチしていない可能性があります。マッチ一覧でグループの有無を確認してください。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: テキスト