マッチ結果
置換結果
パターン [\w.+-]+@[\w-]+(?:\.[\w-]+)*\.[A-Za-z]{2,} は name@example.com や support+billing@mail.example.co.uk に一致し、john@ や jane@localhost には一致しません。ドットと2文字以上の末尾が必要だからです。入力ミスの検出用で、アドレスが実在するかは確認メールでしかわかりません。
使い方
- スラッシュの間にパターンを入力するか、/パターン/フラグ 形式のリテラルをそのまま貼り付けます。メールやIPv4などのよく使うパターンをタップすると、検証済みのパターンから始められます。
- フラグを切り替えます。g はすべてのマッチを検索、i は大文字・小文字を区別しない、m は ^ と $ を各行に適用、s はドットを改行にもマッチさせます。
- テスト文字列を入力または貼り付けます。マッチ箇所は入力と同時にハイライトされ、下に位置とキャプチャグループの一覧が表示されます。
- 「置換」に切り替えて $1、$<name>、$& などを使った置換文字列を入力すると、結果がリアルタイムで表示されます。マッチやグループ、結果はタップでコピーできます。
- ブラウザの JavaScript(ECMAScript)正規表現エンジンを使用します。Node.js、Chrome、Deno と同じ動作で、後読み、名前付きグループ、\p{…} などの Unicode プロパティに対応します。
- マッチ処理はバックグラウンドで実行され、1秒で打ち切られます。破滅的バックトラックを起こすパターンでもページが固まらず、エラーが表示されます。
- 置換文字列では \n で改行、\t でタブを挿入できます。$$ はドル記号そのものです。
- d フラグをオンにすると、各グループの開始・終了位置が表示されます。
- 共有リンクに含まれるのはパターンとフラグだけで、テスト文字列は含まれません。
結果を変えるフラグ
g は最初の一致だけでなくすべての一致を探し、i は大文字と小文字を区別せず、m は ^ と $ を各行の先頭・末尾に合わせ、s はドットを改行にも一致させます。u はUnicodeと \p{…} を有効にし、y は lastIndex の位置だけで照合し、d は各グループの開始・終了位置を返します。一致が1つしか見つからないときは、たいてい g を付け忘れています。
パターンの読み方
\d は数字、\w は英数字とアンダースコア、\s は空白、\b は単語の境界です。量指定子は直前の要素を繰り返します。* は0回以上、+ は1回以上、? は0回か1回、{2,4} は2〜4回です。量指定子の後ろに ? を付けると最短一致になり、<.+?> は最初の > で止まります。丸括弧はグループを作り、(?<year>\d{4}) は名前付き、(?:…) はキャプチャしないグループです。
先読み (?=…)・(?!…) と後読み (?<=…)・(?<!…) は、前後の内容を消費せずに条件だけ確かめます。たとえば \d+(?= USD) は 120 USD の120には一致し、120 EUR には一致しません。
遅いパターンを避ける
(a+)+ や (.*)* のような入れ子の量指定子は、ほぼ一致するテキストで指数関数的にバックトラックし、サーバーを止めてしまうことがあります(ReDoS)。このツールでは照合をバックグラウンドで1秒まで実行するので、固まる代わりにエラーが表示されます。.* より [^,]* のような具体的な文字クラスを使い、値全体を検証するときは ^ と $ で固定しましょう。
よくある質問
この正規表現チェッカーはどの種類の正規表現に対応していますか?
ブラウザに組み込まれたJavaScript(ECMAScript)の正規表現です。Node.js、Deno、TypeScriptと同じ動作です。構文の多くはPCRE、Python、Javaと共通ですが、強欲な量指定子やアトミックグループなど一部の機能は異なります。
一致が1つしか見つからないのはなぜですか?
g(グローバル)フラグがオフになっています。g がないとJavaScriptは最初の一致で止まります。g をオンにすると、すべての一致がハイライトされ一覧に並びます。
置換でキャプチャグループを使うには?
番号付きグループは $1、$2 など、名前付きグループは $<name>、一致全体は $& と書きます。ドル記号そのものを入れたいときは $$ です。
ドットや括弧そのものに一致させるには?
バックスラッシュでエスケープします。\. はピリオド、\( は丸括弧、\[ は角括弧に一致します。文字クラスの中ではほとんどの記号がそのままの意味になるので、[.] でもピリオドに一致します。
正規表現でメールアドレスを完全に検証できますか?
できません。RFC 5321・5322の規則は幅広く複雑で、実用的なパターンには収まりません。簡単な正規表現で入力ミスを見つけ、実際にメールを送ってアドレスを確認するのが確実です。
テスト用のテキストはどこかに送信されますか?
送信されません。照合はブラウザ内で行います。共有リンクに含まれるのはパターンとフラグだけで、テキストは含まれません。