Regex Tester

Regex テスター

ライブマッチ表示、capture group、置換モードを備えた正規表現エディタです。JavaScript フレーバーで、すべてブラウザ内で動作します。

JavaScript / ECMAScript の正規表現です(ブラウザのネイティブ RegExp と同じエンジン)。POSIX の厳密なスーパーセットであり、Python の re、Java の Pattern、PCRE とも一般的な機能では大きく重なります。注意点として、JavaScript は lookahead / lookbehind、名前付きグループ(/(?...)/)、/u および /y フラグをサポートします。一方、所有量指定子(a++, a*+)、原子グループ((?>...))、ブランチリセットグループは PCRE 専用で、JavaScript では使えません。

いいえ。このツール全体がページ内の JavaScript で動作します。パターンのコンパイル、マッチ、置換はすべてブラウザのネイティブ RegExp コンストラクタで実行されます。DevTools → Network を開いて確認してみてください。入力中にリクエストは一切発生しません。本番ログ、顧客のメールアドレス、サーバー側のツールに記録されたくない内容にも安心して貼り付けられます。

/ /
マッチ結果
解説
Regex チートシート
. 任意の文字(改行を除く。/s フラグ付きでは改行も含みます)
\d 数字(0〜9)
\D 数字以外
\w 単語構成文字(a-z, A-Z, 0-9, _)
\W 単語構成文字以外
\s 空白文字(スペース、タブ、改行)
\S 空白文字以外
\b 単語境界
^ $ 文字列の先頭 / 末尾(/m フラグ付きでは行頭 / 行末)
* 直前の要素が 0 回以上
+ 直前の要素が 1 回以上
? 直前の要素が 0 回または 1 回(省略可能)
{n,m} 直前の要素が n 回以上 m 回以下
(...) capture group — $1, $2, … に保存されます
(?:...) 非キャプチャグループ — キャプチャせずに分岐できます
(?<n>...) 名前付き capture group — $<n> で参照できます
[abc] 文字クラス — a, b, c のいずれか
[^abc] 否定文字クラス — a, b, c 以外の文字
a|b 選択 — a または b にマッチします
(?=...) 肯定 lookahead — 直後に続く場合
(?!...) 否定 lookahead — 直後に続かない場合
(?<=...) 肯定 lookbehind — 直前にある場合
(?<!...) 否定 lookbehind — 直前にない場合
$1 $<n> 置換文字列内の backreference — 番号付きまたは名前付き

iKit Regex テスターの特徴

広告やポップアップ、サードパーティトラッカーがない、すっきりと高速な regex プレイグラウンドを開発者向けに用意しました。

ライブマッチ表示

パターンを入力すると、テスト文字列内のすべてのマッチがリアルタイムでハイライトされます。capture group はインデックス範囲と内容とともに一覧表示されます。

マッチ+置換を 1 つのツールで

置換モードに切り替えると String.replace の結果をプレビューできます。$1/$2 の番号付き backreference、$ の名前付きグループ、マッチ全体を表す $& にもしっかり対応しています。

JavaScript の 6 つのフラグすべてに対応

global、case-insensitive、multiline、dotall、unicode、sticky をチップで切り替えられます。ネイティブ RegExp と同じフラグなので、コードへ移植しても挙動が変わりません。

よく使うパターンのプリセット

メール、URL、IPv4、電話番号、日付、16進カラー、UUID をワンクリックで呼び出せます。サンプルテスト文字列付きで、何にマッチするかが一目で分かります。

組み込みチートシート

文字クラス、量指定子、アンカー、グループ、lookaround をすぐに参照できるグリッド。折りたたみ可能なので、必要なときだけ表示できます。

プライバシー設計

パターン、テスト文字列、置換文字列はすべてブラウザ内に留まります。DevTools → Network で確認可能で、入力中にリクエストは一切発生しません。本番ログや顧客データにも安心して使えます。

正規表現マッチの仕組み

正規表現はノイズのように見えますが、その裏で動くエンジンの仕組みはシンプルです。

  1. 1

    パターンをコンパイルする

    JavaScript で /foo/ と書いたり new RegExp('foo') を呼び出したりすると、エンジンはパターンを内部のオートマトン(入力テキストを走査する状態機械)に変換します。コンパイルは一度だけで、マッチ自体は高速に実行されます。

  2. 2

    入力文字列を走査する

    エンジンはテスト文字列上のカーソルを進めながら、各位置でオートマトンの経路をたどろうとします。現在の状態を満たす文字があれば両方のカーソルを進め、不一致なら直前の判断点まで戻って別の分岐を試します。

  3. 3

    Capture group

    パターン中の括弧は capture group を開きます。エンジンがその中身のマッチに成功すると、マッチした内容を覚えて $1$2 などのインデックスで参照できるようにします。名前付きグループ (?<n>...) は名前で保存されます。これらのキャプチャはマッチオブジェクトの groups フィールドで確認できます。

  4. 4

    Backreference を使った置換

    String.replace(regex, replacement) は同じマッチを走査しますが、結果を返すのではなく置換文字列を差し込みます。置換中の $1 はグループ 1 にキャプチャされた実際の値になるので、2024-01-15 を 1 つの正規表現で 15/01/2024 に整形できます。

regex のよくある用途

regex テスターを使いたくなる現実のシーンを紹介します。

メールや URL のフォーマット検証

テスター上でパターンを組み立て、サンプル入力(実際の値エッジケースの両方)を貼り付けて、フォームバリデーションに組み込む前に何にマッチするかを確かめましょう。プリセットは現実の入力の 95% をカバーする手堅い出発点になります。

ログデータのクリーンアップ

タイムスタンプ、ANSI カラーコード、伏せたい IP アドレスが混在したログファイルがある場合、置換モードで \b(?:\d{1,3}\.){3}\d{1,3}\b のようなパターンと [REDACTED] という置換文字列を使い、実ファイルに sed をかける前に結果をプレビューできます。

正規表現を使った find-and-replace でのリファクタリング

IDE の find-and-replace は regex に対応していますが、複数のテストケースに対するライブプレビューは見られません。コードベースのサンプル行を使ってここでパターンを組み立て、キャプチャと置換を確認したうえで、動作する正規表現を VS Code や IntelliJ に貼り付けましょう。

構造化データの抽出

連絡先データからすべてのメールアドレスを取り出したい、領収書から金額をすべて抜き出したい、といった場面では iKit でマッチ用の正規表現を作り、1 行のスクリプト(text.matchAll(re))にコピーするだけで、その場しのぎのパースが 10 行のコードになります。

ローカルで regex をテストする意義

正規表現のパターンには、顧客 ID の構造、内部 API のエンドポイント、パスワードルール、伏せたい PII フィールドなど、機微な情報が含まれがちです。これらをサーバー側のツールへ貼り付け、さらに本物のテストデータも一緒に貼り付けると、パターンと入力の両方が漏れてしまいます。iKit の regex テスターは、すでにブラウザのタブに読み込まれている JavaScript として動作します。

  • マッチや置換の最中にネットワークリクエストはゼロ — DevTools で確認できます。
  • パターンとテスト文字列はブラウザのメモリ内に留まり、クリアやページ更新で消えます。
  • 本番ログのリダクション、顧客データの検証、セキュリティに関わる正規表現にも安心して使えます。

関連ガイド

iKit ブログによる詳しいチュートリアルとツール比較です。

よくある質問

対応している regex フレーバーは何ですか?

JavaScript / ECMAScript の正規表現です(ブラウザのネイティブ RegExp と同じエンジン)。POSIX の厳密なスーパーセットであり、Python の re、Java の Pattern、PCRE とも一般的な機能では大きく重なります。注意点として、JavaScript は lookahead / lookbehind、名前付きグループ(/(?...)/)、/u および /y フラグをサポートします。一方、所有量指定子(a++, a*+)、原子グループ((?>...))、ブランチリセットグループは PCRE 専用で、JavaScript では使えません。

入力したパターンやテスト文字列はどこかにアップロードされますか?

いいえ。このツール全体がページ内の JavaScript で動作します。パターンのコンパイル、マッチ、置換はすべてブラウザのネイティブ RegExp コンストラクタで実行されます。DevTools → Network を開いて確認してみてください。入力中にリクエストは一切発生しません。本番ログ、顧客のメールアドレス、サーバー側のツールに記録されたくない内容にも安心して貼り付けられます。

置換における $1 と $<name> の違いは何ですか?

どちらも置換文字列内の backreference です。$1, $2, … はパターン中に出現する順番で番号付き capture group を参照します — (foo)(bar) なら $1 = 'foo'、$2 = 'bar' になります。$ は (?...) で宣言された名前付き capture group を参照します。可読性が高く、グループの並び替えにも強い表現です。JavaScript には $&(マッチ全体)、$`(マッチ前のテキスト)、$'(マッチ後のテキスト)もあります。

lookbehind が動作しないのはなぜですか?

lookbehind の (?<=...) と (?

絵文字、アクセント付き文字、非ラテン文字をマッチさせるには?

/u (unicode) flag をオンにして、pattern 内で Unicode property escapes を使います。`\p{L}` は任意の文字にマッチします — ñ, é, 中, ก, ا を含みます。`\p{N}` は任意の数字にマッチし、٠-٩ のような非ラテン数字も含まれます。`\p{Emoji}` は絵文字の code points にマッチします。/u なしでは、同じ pattern は surrogate pair の絵文字 (BMP の外側のもの) で静かに失敗し、アクセント付き文字を別々の base + combining marks として扱います。/u flag はエンジンに対して、入力を生の UTF-16 code units ではなく Unicode code points として解釈するよう指示します — つまり、ほとんどの言語横断的な regex バグはこの 1 つのトグルで消えます。