メールや URL のフォーマット検証
テスター上でパターンを組み立て、サンプル入力(実際の値とエッジケースの両方)を貼り付けて、フォームバリデーションに組み込む前に何にマッチするかを確かめましょう。プリセットは現実の入力の 95% をカバーする手堅い出発点になります。
ライブマッチ表示、capture group、置換モードを備えた正規表現エディタです。JavaScript フレーバーで、すべてブラウザ内で動作します。
JavaScript / ECMAScript の正規表現です(ブラウザのネイティブ RegExp と同じエンジン)。POSIX の厳密なスーパーセットであり、Python の re、Java の Pattern、PCRE とも一般的な機能では大きく重なります。注意点として、JavaScript は lookahead / lookbehind、名前付きグループ(/(?
いいえ。このツール全体がページ内の JavaScript で動作します。パターンのコンパイル、マッチ、置換はすべてブラウザのネイティブ RegExp コンストラクタで実行されます。DevTools → Network を開いて確認してみてください。入力中にリクエストは一切発生しません。本番ログ、顧客のメールアドレス、サーバー側のツールに記録されたくない内容にも安心して貼り付けられます。
番号付き capture group には $1, $2 を、名前付きグループには $<name> を、マッチ全体には $& を使えます。
.
任意の文字(改行を除く。/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 — 番号付きまたは名前付き
広告やポップアップ、サードパーティトラッカーがない、すっきりと高速な regex プレイグラウンドを開発者向けに用意しました。
パターンを入力すると、テスト文字列内のすべてのマッチがリアルタイムでハイライトされます。capture group はインデックス範囲と内容とともに一覧表示されます。
置換モードに切り替えると String.replace の結果をプレビューできます。$1/$2 の番号付き backreference、$
global、case-insensitive、multiline、dotall、unicode、sticky をチップで切り替えられます。ネイティブ RegExp と同じフラグなので、コードへ移植しても挙動が変わりません。
メール、URL、IPv4、電話番号、日付、16進カラー、UUID をワンクリックで呼び出せます。サンプルテスト文字列付きで、何にマッチするかが一目で分かります。
文字クラス、量指定子、アンカー、グループ、lookaround をすぐに参照できるグリッド。折りたたみ可能なので、必要なときだけ表示できます。
パターン、テスト文字列、置換文字列はすべてブラウザ内に留まります。DevTools → Network で確認可能で、入力中にリクエストは一切発生しません。本番ログや顧客データにも安心して使えます。
正規表現はノイズのように見えますが、その裏で動くエンジンの仕組みはシンプルです。
JavaScript で /foo/ と書いたり new RegExp('foo') を呼び出したりすると、エンジンはパターンを内部のオートマトン(入力テキストを走査する状態機械)に変換します。コンパイルは一度だけで、マッチ自体は高速に実行されます。
エンジンはテスト文字列上のカーソルを進めながら、各位置でオートマトンの経路をたどろうとします。現在の状態を満たす文字があれば両方のカーソルを進め、不一致なら直前の判断点まで戻って別の分岐を試します。
パターン中の括弧は capture group を開きます。エンジンがその中身のマッチに成功すると、マッチした内容を覚えて $1、$2 などのインデックスで参照できるようにします。名前付きグループ (?<n>...) は名前で保存されます。これらのキャプチャはマッチオブジェクトの groups フィールドで確認できます。
String.replace(regex, replacement) は同じマッチを走査しますが、結果を返すのではなく置換文字列を差し込みます。置換中の $1 はグループ 1 にキャプチャされた実際の値になるので、2024-01-15 を 1 つの正規表現で 15/01/2024 に整形できます。
regex テスターを使いたくなる現実のシーンを紹介します。
テスター上でパターンを組み立て、サンプル入力(実際の値とエッジケースの両方)を貼り付けて、フォームバリデーションに組み込む前に何にマッチするかを確かめましょう。プリセットは現実の入力の 95% をカバーする手堅い出発点になります。
タイムスタンプ、ANSI カラーコード、伏せたい IP アドレスが混在したログファイルがある場合、置換モードで \b(?:\d{1,3}\.){3}\d{1,3}\b のようなパターンと [REDACTED] という置換文字列を使い、実ファイルに sed をかける前に結果をプレビューできます。
IDE の find-and-replace は regex に対応していますが、複数のテストケースに対するライブプレビューは見られません。コードベースのサンプル行を使ってここでパターンを組み立て、キャプチャと置換を確認したうえで、動作する正規表現を VS Code や IntelliJ に貼り付けましょう。
連絡先データからすべてのメールアドレスを取り出したい、領収書から金額をすべて抜き出したい、といった場面では iKit でマッチ用の正規表現を作り、1 行のスクリプト(text.matchAll(re))にコピーするだけで、その場しのぎのパースが 10 行のコードになります。
正規表現のパターンには、顧客 ID の構造、内部 API のエンドポイント、パスワードルール、伏せたい PII フィールドなど、機微な情報が含まれがちです。これらをサーバー側のツールへ貼り付け、さらに本物のテストデータも一緒に貼り付けると、パターンと入力の両方が漏れてしまいます。iKit の regex テスターは、すでにブラウザのタブに読み込まれている JavaScript として動作します。
iKit ブログによる詳しいチュートリアルとツール比較です。
JSON parsing and regex extraction — when each one is the right tool for cleaning up ugly responses.
Regex patterns for spotting Base64 strings in the wild, and how Base64 differs from URL percent-encoding.
JavaScript / ECMAScript の正規表現です(ブラウザのネイティブ RegExp と同じエンジン)。POSIX の厳密なスーパーセットであり、Python の re、Java の Pattern、PCRE とも一般的な機能では大きく重なります。注意点として、JavaScript は lookahead / lookbehind、名前付きグループ(/(?
いいえ。このツール全体がページ内の JavaScript で動作します。パターンのコンパイル、マッチ、置換はすべてブラウザのネイティブ RegExp コンストラクタで実行されます。DevTools → Network を開いて確認してみてください。入力中にリクエストは一切発生しません。本番ログ、顧客のメールアドレス、サーバー側のツールに記録されたくない内容にも安心して貼り付けられます。
どちらも置換文字列内の backreference です。$1, $2, … はパターン中に出現する順番で番号付き capture group を参照します — (foo)(bar) なら $1 = 'foo'、$2 = 'bar' になります。$
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 つのトグルで消えます。