正規表現チェッカーとは?
正規表現(Regular Expression、regex)は、決まったルールに当てはまる文字列を検索・置換するためのパターン言語です。入力チェック、ログ解析、テキストの一括置換などに使われます。このツールはブラウザのJavaScript 正規表現エンジンで動作するため、JavaScript・TypeScript のコードとまったく同じ結果を確認できます。
検査は別スレッド(Web Worker)で実行されます。問題のあるパターンで時間がかかっても1.5秒で自動的に中断され、画面が固まることはありません。
使い方
- よく使うパターンから例を選ぶか、正規表現欄に直接入力します。前後のスラッシュ(/)は不要です。
- 必要なフラグ(g、i、m、s、u、y)をタップしてオン・オフします。
- テストする文字列を入力すると一致箇所が色付きで表示され、下の一覧に位置とグループの値が出ます。
- 置換文字列に $1、$<名前>、$& を入れると置換後の結果をプレビューできます。
正規表現の基本構文
| 表記 | 意味 | 例 |
|---|---|---|
| \d \w \s | 数字 / 英数字と _ / 空白 | \d{3} |
| . | 改行以外の任意の1文字(s フラグなら改行も) | a.c |
| * + ? {n,m} | 0回以上 / 1回以上 / 0〜1回 / n〜m回 | \d{3,4} |
| ^ $ | 先頭 / 末尾(m フラグなら各行) | ^\d+$ |
| [ぁ-ん] [ァ-ヶ] | ひらがな / 全角カタカナ1文字 | [ァ-ヶー]+ |
| \p{Script=Han} | 漢字1文字(u フラグが必要) | \p{Script=Han}+ |
| ( ) (?: ) | キャプチャグループ / キャプチャしないグループ | (\d{3})-(\d{4}) |
| (?<名前> ) | 名前付きグループ | (?<year>\d{4}) |
| (?= ) (?! ) | 肯定先読み / 否定先読み | \d+(?=円) |
フラグの意味
- g(global):最初の1件だけでなく、一致する部分をすべて探します。
- i(ignoreCase):大文字と小文字を区別しません。
- m(multiline):^ と $ が各行の先頭・末尾に一致します。
- s(dotAll):ドット(.)が改行文字にも一致します。
- u(unicode):絵文字などのサロゲートペアを1文字として扱い、\p{…} 構文が使えます。
- y(sticky):決まった位置(lastIndex)でのみ一致を試みます。
壊滅的バックトラック(ReDoS)に注意
^(a+)+$ のように繰り返しの中に繰り返しが入れ子になったパターンは、一致しない入力で組み合わせが指数関数的に増え、サーバーを停止させることがあります。これを ReDoS 攻撃と呼びます。このツールでタイムアウトする場合は、(a+)+ を a+ にするなどして入れ子の繰り返しをなくしてください。
よくある質問
全角と半角のカタカナを区別できますか?
はい。全角カタカナは [ァ-ヶー]、半角カタカナは [ヲ-゚] で表せます。プリセットの「全角カタカナのみ」では半角カタカナの行は一致しません。
Java や Python の正規表現と結果は同じですか?
基本的な構文はほぼ同じですが、細かい動作が異なる場合があります。たとえば Python では名前付きグループを (?P<名前>…) と書き、Java の文字列ではバックスラッシュを2つ(\\d)書く必要があります。このツールは JavaScript(ECMAScript)基準です。
メールアドレスのパターンで実在するアドレスか確認できますか?
いいえ。正規表現でわかるのは形式だけです。実在するかどうかは実際にメールを送らないと確認できません。入力内容はサーバーに送信されません。
一致が多すぎるとどうなりますか?
一致は最大5,000件まで検索・ハイライトし、一覧表には最初の300件を表示します。