正規表現テスター

パターンとテスト用の文字列を入力します。入力するたびに、一致したすべての箇所に色が付き、一覧にはそれぞれの位置と、グループが捉えた内容が示されます。入力した内容がブラウザの外に出ることはありません。

無料 ブラウザで動作 2026年11月10日火曜日確認済み

このツールはブラウザ内で動作します。入力した内容が当社に送信されることはありません。

使い方

  1. スラッシュを付けずに、パターンを入力します。例は、2026-11-10のように書かれた日付を見つけます。
  2. 必要なフラグにチェックを入れます。g はすべての一致を探し、i は大文字と小文字を区別せず、m と s は改行の扱いを変えます。
  3. テスト用の文字列を貼り付けます。一致はすぐに色付きで示され、文字列の下の一覧に、それぞれの位置とグループが表示されます。
  4. 置換後の文字列に文字を入力すると結果が表示されます。その後、コピーを押して取り出します。

ここでの一致の仕組み

このページは、お使いのブラウザに組み込まれた正規表現エンジン、つまり JavaScript が使うものを使います。一致は、文字列の先頭から順番に見つけられます。表示される位置は、一致より前にある文字の数で、0から数えます。JavaScript が文字列を数えるのと同じく、UTF-16の単位で数えます。

検索は、ブラウザのバックグラウンドのワーカーで実行されるため、ページは反応し続けます。10,000件の一致で検索は止まり、20万文字を超えるテキストは検索されません。x* のように空の文字列にも一致しうるパターンは、空の一致のあとで1文字ずつ先へ進むため、検索は必ず終わります。2秒を超える検索は止められます。詳しくは下の節を参照してください。

  • g フラグがなければ、String.match() と同じく、最初の一致だけを表示します。
  • u フラグは、絵文字やそのほかの基本多言語面の外の文字を、1文字として読みます。
  • d フラグは、各グループの開始位置と終了位置を一覧に加えます。

破滅的バックトラックと2秒の制限

正規表現エンジンは、パターンが一致しうる方法を、1つずつ順番に試します。パターンによっては、特に繰り返しのグループの中にさらに繰り返しがある場合、例えば (a+)+ のようなものでは、方法の数が非常に速く増えます。文字が1つ増えるだけで、作業量が2倍になることもあります。これは、テキストがほぼ一致していて、最後の最後で失敗する場合に最も起こりやすくなります。

例えば、パターン (a+)+$ を、多くの a の後に「!」が続くテキストに当てたとします。$ はテキストの末尾を必要とするため、この一致は成立しません。それでもエンジンは、前にある文字の分け方をすべて試してから諦めます。約26文字で、一般的なパソコンでも1秒以上かかることがあり、1文字増えるごとにさらに遅くなります。時間はお使いの機器によって変わります。

このページは、各検索をバックグラウンドのワーカーで実行し、2秒で止めて、そのことを表示します。ページのほかの部分は動き続けるため、パターンやテキストを変えて、もう一度試せます。

  • 同じ文字に対して、繰り返しの中にさらに繰り返しを置かないでください。(a+)+$ ではなく (a+)$ と書きます。同じテキストで、安全なパターンはすぐに終わります。
  • 具体的に書いてください。グループの中ではドットではなく [a-z] や \d+ を使い、一致の各部分が多くの方法で重ならないようにします。
  • まず、テキストの短い見本でパターンを試し、そのあと全文で試してください。
  • 可能なら位置を固定してください。先頭の ^ と末尾の $ は、エンジンがすべての開始位置を試すのを防ぎます。

置換のパターン

置換後の文字列は、JavaScript の String.replace() の規則に従います。ドル記号は、一致した文字列に置き換えられるコードを始めます:

書くもの 置き換えられるもの
$1、$2など 番号を付けたグループの文字列
$& 一致全体
$` 一致より前の文字列
$' 一致より後の文字列
$$ ドル記号1つ
ドル記号、小なり記号、グループ名、大なり記号 名前を付けたグループの文字列

PCRE と .NET との違い

PCRE(PHP や多くの Linux ツール)や .NET(C# や Visual Basic)向けに書かれたパターンは、ふつうここでも動きますが、一部の機能はどちらか一方のエンジンにしかありません。表は、特に重要なものを挙げています。

機能 JavaScript(このページ) PCRE と .NET
アトミックグループと所有量指定子 利用できません アトミックグループは PCRE と .NET にあり、a++ のような所有量指定子は PCRE にあります
アンカー \A、\Z、\z 利用できません:^ と $ を使ってください 利用できます
(?P<…>) と書く名前付きグループ 利用できません PCRE で利用できます
パターン内の (?i) のようなインラインオプション 利用できません:代わりにフラグを設定してください .NET で利用できます
\K で一致から文字列を除く 利用できません PCRE で利用できます
名前付きグループの置換 ドル記号、小なり記号、名前、大なり記号 .NET は、ドル記号、波かっこ、名前、波かっこを使います

例:1つのテキストに3つの日付

サンプルのパターンは、名前を付けた3つのグループを持ちます。年の4桁、月の2桁、日の2桁を、ハイフンで区切ったものです。テキストには3つの日付があり、最初の文字を0として数えると、位置14、34、50で一致します。

置換では、日、月、年を3つのグループ名として書きます(ドル記号と各名前を、小なり記号と大なり記号で挟みます)。3つの日付は10.11.2026、03.12.2026、15.01.2027に書き換えられます。結果は次のとおりです:Invoice dated 10.11.2026, paid on 03.12.2026. Due 15.01.2027.

よくある質問

このテスターは、どの正規表現の方言を使いますか?

お使いのブラウザに組み込まれた JavaScript のエンジンを使います。文字列の検索、検証、整形に使うほとんどのパターンは、JavaScript、PCRE、.NET で同じように動きますが、一部の機能は異なります。違いの節を参照してください。

一覧が10,000件で止まるのはなぜですか?

一致は順番に集められます。非常に長い一覧は描くのに時間がかかり、読むには長すぎるため、パターンがそれ以上に一致する場合は、最初の10,000件を表示し、検索が止まったことをページが示します。

テキストが20万文字を超えると検索されないのはなぜですか?

非常に長いテキストは、ページを遅くし、パターンによっては長い時間がかかるためです。まずテキストの一部でパターンを試し、そのあと残りで試すか、テキストを小さく分けてください。

ハイライトされない一致があるのはなぜですか?

x* が文字の間で見つける空の場所のように、1文字も含まない一致は、色を付けるものがありません。それでも位置とともに一覧には残るため、どこにあるかは確認できます。

テスターは入力したテキストをサーバーに送りますか?

いいえ。一致の処理はお使いのブラウザの中で行われ、ページは入力内容を保存も送信もしません。ページを閉じると消えます。

パターンが正しくないという表示は、何を意味しますか?

そのパターンは JavaScript の正規表現として読めません。メッセージはエンジンから英語で届き、閉じられていない角かっこなど、問題の箇所を示します。

PCRE や .NET 向けのパターンを、ここで試せますか?

一般的な機能だけを使っていれば、多くの場合は試せます。アトミックグループ、所有量指定子、\A、\z、インラインオプションのどれかがある場合は、先にその部分を JavaScript 向けに書き換えてください。どの機能がそれにあたるかは、表で示しています。

パターンの処理に時間がかかりすぎたと表示されるのはなぜですか?

このテキストでは、2秒以内に検索が終わらなかったため、ページが止めました。多くの場合、(a+)+ のように繰り返しの中にさらに繰り返しがあるパターンを、ほぼ一致するテキストに当てたことが原因です。破滅的バックトラックの節に、より安全な書き方があります。

出典

数値と文章の最終確認日:2026年11月10日火曜日。

当サイトの運営に必要なCookieを使用します。お客様の同意があれば、Googleは広告用Cookieを使い、パーソナライズ広告を表示します。拒否された場合も広告は表示されますが、パーソナライズはされません。