正規表現パターンのテスト方法
ブラウザで正規表現をテスト。パターンとテスト文字列を入力し、フラグを切り替え、一致とキャプチャグループを調べ、置換をローカルでプレビューします。
正規表現が強力なのはコンパクトだからこそですが、そのコンパクトさゆえに、微妙な誤りを起こしやすいという側面もあります。正しく見えるパターンが、一致しすぎたり、少なすぎたり、まったく一致しなかったりすることはよくあります。確実に確かめる唯一の方法は、実際のテキストに対して実行することです。正規表現テスターは、JavaScriptの正規表現をブラウザ内で実行し、キャプチャグループを含むすべての一致を表示し、置換をプレビューします — すべてテキストをアップロードせずに行います。
概要
実際の入力に対して正規表現を開発・検証できます。完全にローカルで。
- 一致とグループが見える — 各一致はテキスト、インデックス範囲、キャプチャグループ(名前付きグループを含む)を一覧表示します。
- 置換をプレビュー — 置換文字列を入力すると変更後の結果が即座に表示され、変化がない場合はその旨を伝えます。
- JSの7フラグすべて — g、i、m、s、u、y、d を切り替え、結果の更新を確認できます。
正規表現とは
正規表現とは、文字列の集合を記述するパターンです。テキストの検索・検証・抽出・置換を行う標準的な道具で、どのプログラミング言語にも組み込まれています。JavaScriptでは正規表現は RegExp オブジェクトで、リテラル(/\d+/g)として、あるいは構築して(new RegExp("\\d+", "g"))書きます。
正規表現が担うよくある仕事:
- 検証 — 「この文字列はメールアドレス、日付、電話番号の形をしているか?」
- 抽出 — 「文中のすべてのURL、すべての数値、すべての引用句を取り出す。」
- 置換 — 「すべてのプレースホルダーを実際の値に置き換える」「空白をすべて正規化する。」
正規表現は簡潔で記号的なので、文字一つの場所違えで意味が変わります。代表的な入力でテストすることが、「動くと思う」を「動く」に変える方法です。
正規表現パターンの構成要素
パターンはいくつかの構成要素から組み上がります。名前で把握しておくとパターンが読みやすくなります。
- リテラル — 自分自身に一致する通常の文字。
catはc、a、tの順に一致します。 - 文字クラス — 角括弧内に許容文字の集合を書きます。
[a-z]は任意の小文字に一致し、\dは[0-9]、\wは単語文字、.は(ほぼ)任意の文字の簡易表記です。 - 量指定子 — 直前の要素が何回繰り返すか。
*は0回以上、+は1回以上、?は0回か1回、{n}や{n,m}は厳密または上限付きの回数です。 - アンカー — 文字ではなく位置。
^は(mフラグ時は行の)先頭、$は末尾に一致します。 - グループ — 丸括弧
(...)は一致の一部をキャプチャし、後で参照できるようにします。名前付きグループ(?<year>\d{4})はキャプチャに読みやすい名前を与えます。 - 選択 —
cat|dogはcatまたはdogに一致します。
これらを組み合わせてパターンを書き、テキストに当てはめて確認します。
フラグ
フラグはパターン全体の振る舞いを変え、閉じスラッシュの後に付けます(例 /x/gi)。テスターはJavaScriptの7つのフラグを切り替えとして公開しています。
- g(グローバル) — 最初だけでなくすべての一致を探します。
gがないと最初の一致で止まります。 - i(大小無視) — 大文字小文字を区別せず一致させ、
[a-z]が大文字にも一致するようにします。 - m(複数行) —
^と$が文字列全体だけでなく各行の先頭・末尾にも一致するようにします。 - s(ドット全体) —
.が通常は一致しない改行文字にも一致するようにします。 - u(Unicode) — パターンをUnicodeコードポイントとして扱い、絵文字や非ASCII文字に必須です。
- y(Sticky) —
lastIndexの位置でのみ一致させ、各検索を正確な位置に固定します。 - d(インデックス) — 各キャプチャグループの値に加え、開始・終了インデックスを公開します。
日常ではたいてい g と i だけで足り、残りは複数行テキスト、Unicode、高度な走査で現れる特定のケースを解決します。
手順:パターンをテストする
正規表現テスターを開き、次の流れで進めます。
- パターン欄にパターンを入力 — 囲みのスラッシュやフラグなしで書きます。ツールがリテラルを組み立てます。
- テスト文字列欄にテスト文字列を貼り付け — パターンが探す対象のテキストです。
- 必要なフラグを切り替え — g、i、m、s、u、y、d。切り替えるたびに結果が更新されます。
- 「一致」タブを確認 — 各一致は一致したテキスト、インデックス範囲、キャプチャグループ(名前付きグループは名前付きで表示)を示します。何も一致しなければ「一致なし」と表示されます。
- 「置換」タブに切り替え — 置換文字列を入力します(
$1や$<name>でキャプチャグループを参照できます)。ツールはtext.replace(regex, replacement)を実行し、変更後の結果を表示し、変化がなければその旨を伝えます。 - コピーまたはリセット — 正規表現をコピー でリテラル、要約をコピー で一致一覧、置換結果をコピー で置換結果、リセット で全消去できます。
どこから始めればよいか分からなければ、サンプル ドロップダウンが 日付/メール/URL/単語 の完成したパターンとテキストを読み込み、すぐに動く例を見せます。
制限とJavaScript固有の注意点
ツールが期待通りであるための、正直な制約をいくつか挙げます。
- JavaScriptエンジン専用 — ツールはブラウザ内で
new RegExp(pattern, flags)を実行するため、JavaScriptの正規表現エンジンを反映します。PCRE、Python、Javaではありません。他のエンジン向けに書かれたパターンは挙動が異なることがあり、ツールがパターンを「解説」することはありません。 - サイズに上限あり — パターンは500文字、テスト文字列は20,000文字までです。超えると実行せずに問題を指摘します。
- 一致は200件まで — パターンが200回を超えて一致すると、ツールは最初の200件を「最初の200件を表示しています。」の通知とともに表示します。検証には十分で、巨大な入力の計数にはパターンを絞り込んでください。
- 後読みはエンジンと世代による — JavaScriptの後読み(
(?<=...))はモダンブラウザでサポートされますが、古いエンジンにはなく、PCREとも異なります。後読みが失敗する場合、大抵はそれが理由です。
よくある質問
PCREに対応していますか?
いいえ。ツールはJavaScriptの RegExp エンジン(new RegExp(pattern, flags))を使い、固有の構文と機能セットを持ち、PCRE互換ではありません。再帰パターンや特定のPOSIXクラスなどPCRE専用の機能はここでは動きません。JavaScriptエンジン向けにパターンを書くか、テスト前にPCREパターンを変換してください。
キャプチャグループとは?
パターン内の丸括弧 ( ... ) はキャプチャグループを作り、一致したテキスト部分を覚えておき、後で参照できるようにします — 置換では番号($1、$2)で、あるいは名前付きグループ (?<name> ...) を書けば名前で参照できます。「一致」タブは各グループの値(と名前、あれば)を表示し、それによってパターンが意図通りにキャプチャしていることを確かめられます。
テキストを置換するには?
「置換」 タブに切り替え、置換 を入力します。ツールは現在のフラグで text.replace(regex, replacement) を実行し結果を表示します。グループは $1、$2、… で、名前付きグループは $<name> で参照できます。グローバルフラグ g がオフなら最初の一致だけが置換されます。変化がないときは、ツールがそのまま伝えます。
なぜ200件だけなのですか?
安全と速度のためです。パターンは大きな文書で何千回も一致し、すべてを表示すればページがほぼ止まるまで遅くなります。200件の上限は、パターンが意図通りに一致しているかを検証するには十分です。全体の件数が必要なら、パターンをより絞り込むか、より小さな抜粋でテストしてください。

このツールから始める
今すぐ始める