使い方
- スラッシュを付けずに、パターンを入力します。例は、2026-11-10のように書かれた日付を見つけます。
- 必要なフラグにチェックを入れます。g はすべての一致を探し、i は大文字と小文字を区別せず、m と s は改行の扱いを変えます。
- テスト用の文字列を貼り付けます。一致はすぐに色付きで示され、文字列の下の一覧に、それぞれの位置とグループが表示されます。
- 置換後の文字列に文字を入力すると結果が表示されます。その後、コピーを押して取り出します。
ここでの一致の仕組み
このページは、お使いのブラウザに組み込まれた正規表現エンジン、つまり 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+)+ のように繰り返しの中にさらに繰り返しがあるパターンを、ほぼ一致するテキストに当てたことが原因です。破滅的バックトラックの節に、より安全な書き方があります。
出典
- MDN:JavaScript の正規表現(フラグとグループを含む)(英語)
- MDN:String.prototype.replace()、置換のパターン(英語)
- PCRE2パターン構文(PCRE の文書)(英語)
- Microsoft:.NET の正規表現言語の早見表(英語)
数値と文章の最終確認日:2026年11月10日火曜日。