正規表現テストツール
正規表現パターンを入力すると、テスト対象テキストのマッチ部分をハイライト表示し、キャプチャグループ・名前付きグループ・置換結果をその場で確認できます。処理はすべてブラウザ内で完結し、入力内容がサーバーへ送信されることはありません。
g(グローバル)フラグはテスト対象のマッチ一覧には常に適用されます(全マッチを表示するため)。置換では、 g を外すと最初の1件だけ、付けると全件が置換されます。
マッチ結果(3件)
| # | マッチ文字列 | 位置 | キャプチャグループ |
|---|---|---|---|
| 1 | 2026-09-06 | 4 | (1)2026 (2)09 (3)06 |
| 2 | 2026-10-01 | 17 | (1)2026 (2)10 (3)01 |
| 3 | 2026-08-20 | 38 | (1)2026 (2)08 (3)20 |
置換
正規表現テストの使い方
正規表現パターンを入力する
パターン欄に正規表現を入力します。キャプチャグループ「(...)」や名前付きグループ「(?<name>...)」も使えます。初期状態ではサンプルの日付パターンが入っています。
テスト対象テキストを貼り付ける
確認したい文章を貼り付けます。入力と同時にマッチした部分がハイライト表示され、下の一覧にキャプチャグループの値が並びます。
必要なら置換も試す
「置換」欄に置換後の文字列を入力すると、$1・$2 のようなキャプチャ参照を使った置換結果をその場で確認できます。
仕組みと考え方
本ツールはブラウザ標準の RegExp と String.prototype.matchAll() / replace() をそのまま使っています。パターンや対象テキストは端末内でのみ処理され、当サイトのサーバーへは送信されません。
マッチ一覧の表示は、g(グローバル)フラグの有無に関わらず常にテキスト全体を対象にしています。matchAll() は空文字にマッチするパターン(例: /a*/)でも走査位置を自動的に進めるため、手動でループを書く場合に起こりがちな無限ループが発生しません。巨大な入力や広くマッチしすぎるパターンでブラウザが固まらないよう、マッチ件数には上限(既定1000件)を設けています。
一方、置換(replace)は JavaScript 標準の挙動をそのまま反映します。g フラグを外すと最初の1件だけが置換され、付けると全件が置換されます。この差は正規表現エンジンの一般的な仕様であり、意図せず1件しか置換されない場合は g フラグの有無をまず確認してください。
使いどころ・注意点
- i(大文字小文字を無視)・m(複数行)・s(. が改行にもマッチ)・u(Unicode単位で解釈)は、パターンの意味を変える組み合わせなので、期待通りにマッチしないときはまずここを見直す。
- 名前付きグループ (?<year>\d{4}) を使うと、置換や後続処理で番号ではなく名前で参照でき、パターンが複雑になっても読みやすくなる。
- 貪欲マッチ(.*)は行き過ぎてマッチする原因になりやすい。範囲を絞りたい場合は .*? のような非貪欲(lazy)修飾子や、具体的な文字クラスを使う。
- 巨大なテキストや複雑なパターンでは、ブラウザの処理に時間がかかることがある。まず短い抜粋で正規表現の形を固めてから全文に適用すると安全。
よくある質問
入力したテキストやパターンはサーバーに送信されますか?
いいえ。マッチ判定・置換ともにブラウザ内の JavaScript だけで行い、当サイトのサーバーへは送信していません。
gフラグのチェックを外すとマッチ一覧が1件になりますか?
なりません。マッチ一覧・ハイライト表示は常にテキスト全体を対象にします。gフラグが実際に影響するのは下の「置換」結果だけです。
同じ文字列に何度もマッチしてしまい件数が多すぎます。
空文字にマッチできるパターン(例: a*)は、マッチしない位置でも空文字マッチとして数えられるため件数が増えます。+ を使うなど、1文字以上を必須にするパターンへ調整してください。
PCRE(PHPなど)やPythonの正規表現と結果が違います。
本ツールはJavaScriptの正規表現エンジンを使用しています。後読み・先読みの一部記法や、名前付きグループの扱いなど、言語ごとに細部の仕様が異なるため、他言語向けの正規表現はそのまま同じ結果にならないことがあります。
マッチ件数が1000件で止まります。
巨大な入力でブラウザが固まるのを防ぐため、マッチ一覧の表示は既定で1000件までに制限しています。全件を確認したい場合はテキストを分割して個別に実行してください。