正規表現テスター

正規表現のパターンとフラグを入力すると、テスト文字列のマッチ箇所をハイライトし、各マッチのインデックスやキャプチャグループを一覧表示します。

入力

よく使うパターン例

ボタンを押すと上のパターン欄に例が入ります(既存の入力は上書きされます)。

フラグ

マッチ結果

—

ハイライト


          

※ 判定にはお使いのブラウザの JavaScript 正規表現エンジン(RegExp)を使用します。入力した内容はブラウザ内だけで処理され、どこにも送信されません。

解説

正規表現(regex/regular expression)は、「数字が4つ並ぶ」「@を含むメールらしい文字列」のような“文字の並びのパターン”を記号で書き表し、文字列の検索・抽出・置換を行うための記法です。プログラミングやテキストエディタの一括置換、フォームの入力チェックなど、あらゆる場面で使われます。本ツールは、書いたパターンが思った通りにマッチするかをその場で試せる「テスター」です。

判定にはお使いのブラウザのJavaScript(ECMAScript)の RegExp をそのまま使用します。そのため構文やフラグはJavaScriptの仕様に準拠し、PCRE(PHP)やPython、grepなどとは一部の挙動(後読みの可否や一部のエスケープ)が異なる場合があります。たとえばパターン `\d{4}-\d{2}-\d{2}` は「数字4桁-数字2桁-数字2桁」、つまり 2026-06-28 のような日付の形にマッチします。

フラグは挙動を変えるスイッチです。g(グローバル)は最初の1件だけでなく全件を対象にします。i は大文字小文字を区別しません(Apple も apple もマッチ)。m(複数行)は ^ と $ を各行の先頭・末尾に効かせます。s(ドットオール)は通常は改行にマッチしない `.` を改行にもマッチさせます。本ツールは g が外れていても内部的に全走査して件数を数え、g の有無による表示の違い(「最初の1件のみ」か「全マッチ」か)を明記します。

キャプチャグループは、パターンの一部を `(...)` で囲んで「取り出したい部分」に名前を付ける機能です。たとえば `(\d{4})-(\d{2})-(\d{2})` を 2026-06-28 に当てると、グループ1=2026、グループ2=06、グループ3=28 と分解されます。`(?<year>\d{4})` のように名前付きにすれば、一覧に `<year>` として値が並びます。マッチしなかったグループは「(未マッチ)」、マッチしたが中身が空のものは「(空文字)」と区別して表示します。

置換プレビューは JavaScript の String.prototype.replace に準拠します。置換文字列の中で $1・$2 は対応する番号のキャプチャ、$<name> は名前付きキャプチャを参照します。先の日付例で置換文字列に `$1年$2月$3日` と入れると、2026-06-28 が「2026年06月28日」に変換されます。空マッチ(量指定子が0回にマッチする等)はハイライト上で専用の目印(∅)として示し、内部では走査位置を1つ進めて無限ループを防いでいます。

入力したパターン・テスト文字列・置換文字列は、すべてお使いのブラウザの中だけで処理され、サーバーや外部にはいっさい送信されません。実データやログ、個人情報を含む文字列でも安心して試せます。よくある用途は、メールアドレスや電話番号・日付の抽出、ログからのID取り出し、表記ゆれの一括置換、入力バリデーション用パターンの動作確認などです。

よくある質問

正規表現の書き方の基本を教えてください。

よく使う部品は、\d(数字1文字)、\w(英数字・アンダースコア)、.(任意の1文字)、+(直前を1回以上)、*(0回以上)、?(0回または1回)、{n}(ちょうどn回)、[abc](いずれか1文字)、(...)(グループ化/抽出)、|(または)です。例として「数字4桁」は \d{4}、「数字4桁-2桁-2桁の日付」は \d{4}-\d{2}-\d{2} と書きます。このツールにパターンとテスト文字列を入れれば、その場でマッチを確かめながら覚えられます。

どの正規表現エンジンで判定していますか?

お使いのブラウザのJavaScript(ECMAScript)の RegExp です。PCRE(PHP)・Python・grep などとは一部の構文(後読みや一部のエスケープ、フラグの種類)が異なる場合があるため、他言語へ移植する際はご注意ください。

g(グローバル)フラグを付けないとどうなりますか?

置換は最初の1件だけが対象になります。マッチ一覧の表示も「g フラグが無いため最初の1件のみ」と明記されます。すべての出現を対象にしたいときは g をオンにしてください。

マッチした部分の一部だけを取り出すには?

取り出したい範囲を ( ) で囲ってキャプチャグループにします。マッチ一覧に「グループ1・グループ2 …」として値が分解表示されます。(?<name>...) と書けば名前付きで取り出せ、置換では $1 や $<name> で差し込めます。

置換でキャプチャした内容を使えますか?

はい。置換文字列の中で $1, $2 などの番号参照や $<name> の名前付き参照が使えます(JavaScript の replace の仕様に準拠)。例: パターン (\d{4})-(\d{2})-(\d{2})、置換 $1年$2月$3日 で日付の表記を変換できます。

入力したテキストは外部に送信されますか?

送信されません。パターン・テスト文字列・置換結果はすべてブラウザ内だけで処理され、サーバーや外部に送られることはありません。

「∅」という記号は何ですか?

幅ゼロの「空マッチ」を起きた位置で示す目印です。a* のように0回にもマッチするパターンでは、文字を消費しないマッチが各位置で発生することがあり、それを可視化したものです。