コンテンツへスキップ

正規表現テスター

JavaScript 互換の正規表現をサンプルテキストに対して実行し、一致箇所の確認と置換結果のプレビューをコードに組み込む前に行えます。サンプルテキスト、JavaScript 互換のパターン、必要に応じて global・大文字小文字の無視・複数行・dotAll・unicode の各フラグ、置換文字列を指定すると、すべての一致と置換結果を表示します。

AI アシスト · 任意

目的から正規表現を組み立ててデバッグ

一致させたい規則を書くか、現在のパターンを確認します。テスターのテキストは端末内に留まります。

DeepSeek API
1 · 目的
現在のパターン —
送信される内容: DeepSeek に送信されるのは、この説明、現在の正規表現、そのフラグだけです。正規表現テスターのテキストは含まれません。 プライバシーの詳細
2 · 提案パターン
提案パターン、解説、合成テストはここに表示されます。確認するまで何も送信されません。
正規表現
置換後

JavaScript の正規表現をテストする方法

このテスターはブラウザーと同じ JavaScript エンジンでサンプルテキストにパターンを適用するので、ここで一致するパターンはアプリケーションでも一致します。有効なフラグ、各一致の位置、キャプチャグループ、置換のプレビューをまとめて確認できます。

パターンは PCRE や Python ではなく JavaScript(ECMAScript)です。方言は大きく重なりますが完全ではなく、他で動いたパターンがここで失敗する最も多い原因がこれです。メールアドレス、URL、IPv4、UUID、日付、時刻、16進カラー、数値の定型パターンはワンクリックで使えます。

  1. 検索したいテキストをサンプルテキスト欄に貼り付けます。
  2. 区切り文字やフラグを付けずにパターンを入力します(ページ側で付加されます)。定型パターンを選んで編集してもかまいません。
  3. 必要なフラグをオンにします: 全体検索、大文字と小文字を区別しない、複数行、ドットを改行にも一致させる、Unicode。
  4. 一致一覧を読みます。各項目に一致した文字列、位置(0 始まり)、キャプチャグループが表示され、グループが空になる理由を確認できます。
  5. 置換後のテキストを入力して置換結果をプレビューします。全体検索がオフの場合、置換されるのは最初の一致だけです。

JavaScript 正規表現の詳細

ここで使える正規表現の方言

ECMAScript です。名前付きグループ (?<name>...)、後読み (?<=...) と (?<!...)、u フラグ付きの \p{Letter} などの Unicode プロパティクラスは現在のブラウザーで使えます。占有量指定子、アトミックグループ、再帰、\A と \Z、(?i) のようなインラインモディファイアはこの言語にはありません。

こうした違いは Python・PHP・Java 向けに書かれたパターンを壊します。(?P<name>...) は (?<name>...) に、\Z は $ に置き換え、モディファイアはパターンからチェックボックスへ移します。この 3 点で実際のほとんどのケースは解決します。

各フラグが変えること

全体検索は最初の一致で止まらずすべての一致を返し、置換でもテキスト全体に適用されます。大文字と小文字を区別しないをオンにすると大文字小文字を問わず一致します。複数行では ^ と $ が文字列の先頭と末尾だけでなく、内部の改行位置にも一致します。

ドットを改行にも一致させると、ドットが改行を消費できるようになり、テキストブロック全体の検索に必要です。Unicode はコードポイント単位の意味論に切り替わり、ドットが絵文字の半分ではなく 1 文字全体に一致し、\p{...} クラスも使えます。

一致・グループ・置換

キャプチャグループは開き括弧の順に番号が付きます。非キャプチャグループ (?:...) は番号を消費しないので、選択肢をまとめたいだけのときに便利です。名前付きグループは置換で $<name> として参照でき、パターンが大きくなっても $3 より読みやすくなります。

置換文字列では $1〜$99 がキャプチャグループ、$& が一致全体、$$ がリテラルのドル記号を挿入します。(a+)+ のような入れ子の量指定子をほぼ一致する長い入力に使うと、指数的なバックトラックでページが固まることがある点に注意してください。

一致と置換に関する質問

テストしたテキストはサーバーに送信されますか?

いいえ。一致と置換はブラウザー内の JavaScript エンジンで計算され、ツールのボタンはネットワーク要求を行いません。唯一の例外は任意の AI パネルで、同意のチェック後に説明文・現在のパターン・フラグだけを DeepSeek に送信し、サンプルテキストは決して送信しません。

Python や PHP では動くパターンがここで失敗するのはなぜですか?

方言が違うためです。Python は名前付きグループを (?P<name>...) と書き、\Z があります。Java と PCRE には占有量指定子とアトミックグループ、PHP には (?i) のようなモディファイアがあります。ECMAScript にはそれらがないため、コピーではなく書き換えが必要です。

最初の一致しか置換されないのはなぜですか?

全体検索がオフになっているためです。このフラグがないと置換は最初の一致で止まります。JavaScript の String.prototype.replace が非グローバルパターンで示す動作と同じで、全体検索をオンにするとすべて置換されます。

各フラグは具体的に何をしますか?

全体検索: 最初だけでなくすべての一致と置換。大文字と小文字を区別しない: 大小を問わず一致。複数行: ^ と $ が内部の改行位置にも一致。ドットを改行にも一致させる: ドットが改行を消費。Unicode: コードポイント単位になり、絵文字が 1 文字として数えられ \p{...} クラスが使えます。

一覧の位置とグループはどう読めばよいですか?

位置は一致の開始インデックスで 0 から数えます。キャプチャグループは $1、$2 のように番号付きで引用符付き表示され、名前付きグループは名前でも表示されます。任意のグループが一致に関与しない場合は空で表示され、パターンのデバッグに役立ちます。

置換欄には何を書けますか?

$1〜$99 で対応するグループ、$& で一致全体、$<name> で名前付きグループ、$$ でリテラルのドル記号を挿入できます。JavaScript と同様、全体検索がオフのときは最初の一致だけが置き換わります。

最近使ったツール: