正規表現テスター

正規表現とテスト文字列を入力すると、一致する部分をリアルタイムでハイライトし、マッチごとの位置、キャプチャグループ(名前付きを含む)、置換結果を表示します。よく使うパターンはボタン1つで読み込めます。処理はすべてブラウザ内で行われます。

//
フラグ: g すべて検索 · i 大文字小文字を区別しない · m 複数行 · s ドットが改行にも一致 · u Unicode · y 固定位置。gがない場合は最初の1件だけ表示します。

正規表現とは、このテスターが動く仕組み

正規表現(regex)は、文字列の「形」を記号で書き表し、検索・検証・抽出・置換に使う表記法です。「0から始まって、ハイフンがあってもなくてもよい11桁の番号」のように、言葉にすると長い条件を1行で書けるため、フォームの入力チェック、ログの解析、テキストの一括修正、スクレイピング後のデータ整理などに幅広く使われます。

このツールはブラウザに組み込まれたJavaScript(ECMAScript)の正規表現エンジンをそのまま使っています。ここで動いたパターンは、JavaScriptやTypeScriptのnew RegExp(...)や/パターン/フラグにそのまま入れられます。 PHPなどのPCRE、Python、Java、.NETにはそれぞれ方言があり、基本は共通でも細部が違います(後半の「他の言語との違い」を参照)。 処理はすべてお使いのブラウザ内で完結します。入力したパターンとテスト文字列は送信も保存もされません。それでも、実在の個人情報をテスト欄に貼る必要はなく、ダミーの文字列で十分です。

基本構文の早見表

表記意味例
.改行以外の任意の1文字(sフラグがあれば改行も含む)a.c → abc、a1c
\d \w \s数字 / 半角英数字とアンダースコア / 空白類\d\d → 12
[abc] [^abc]リスト内の1文字 / リスト以外の1文字[A-Z] → 英大文字
* + ?0回以上 / 1回以上 / 0〜1回ab+ → ab、abbb
a{2,3}2〜3回の繰り返し\d{4} → ちょうど4桁の数字
^ $文字列(mフラグがあれば各行)の先頭 / 末尾^abc$
\b単語の境界(単語文字と非単語文字の間)\bcat\b
(…) (?:…)キャプチャするグループ / しないグループ(ab)+
a|bまたはcat|dog
(?=…) (?!…)先読み(後ろに…がある / ない)\d+(?=%)
(?<=…) (?<!…)後読み(前に…がある / ない)(?<!\d)\d{5}(?!\d)

日本語で必ず知っておきたいのは、\wと\bが半角英数字とアンダースコアしか「単語文字」と見なさないことです。ひらがな・カタカナ・漢字は単語文字ではないので、\w+では日本語を拾えず、\bcat\bは「cat猫」の中でもマッチします。 日本語の文字を狙うときは、uフラグを付けてUnicodeプロパティで指定します。たとえばひらがなは\p{Script=Hiragana}+、漢字は\p{Script=Han}+です。

フラグ

新しいエンジンには、グループの位置情報を返すdと、拡張Unicodeモードのvもありますが、ブラウザが対応している場合に限ります。このツールは入力されたフラグをそのままブラウザに渡すため、非対応のフラグや重複したフラグはエラーとして表示されます。gなしでは最初の1件だけを表示し、exec()を1回呼んだ結果と同じ見え方にしています。

よく使うパターン(Node.jsで動作確認済み)

以下は上のプリセットボタンに入っており、例文が説明どおりにマッチする・除外されることを確認しています。

メールアドレス

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b(フラグgi)は、alex@example.comとa.b+c@mail.co.ukにマッチし、トップレベルドメインのないbad@xや@no.comは除外します。 ただしメールアドレスの正式な規格(RFC 5322)はもっと複雑で、短いパターンで有効なアドレスをすべて通し、誤りをすべて見つけることはできません。簡易な一次チェックにとどめ、実在の確認は確認メールの送信で行うのが基本です。

携帯電話番号と郵便番号

\b0[789]0-?\d{4}-?\d{4}\bは、070・080・090から始まる11桁の番号を、ハイフンの有無を問わず拾います。例文では090-1234-5678と08012345678がマッチし、桁数が合わない090-123-45678や、050で始まるIP電話の050-1234-5678は除外されます。 郵便番号は\b\d{3}-\d{4}\bで、100-0001のような3桁-4桁の形式に合うものを探します(〒の記号は含まれません)。どちらも「形式」だけを見るもので、実際にその番号があるかどうかは分かりません。

日付(YYYY/MM/DD または YYYY-MM-DD)

\b(\d{4})[\/-](0?[1-9]|1[0-2])[\/-](0?[1-9]|[12]\d|3[01])\bは、区切りにスラッシュとハイフンの両方を許し、月を1〜12、日を1〜31に限定します。例文の2026/10/13と2026-1-5はマッチし、2026/13/01(13月)は除外されます。 ただし正規表現が見るのは形式だけなので、2月31日のような暦にない日付は通ってしまいます。実在する日付かどうかは、正規表現のあとに日付ライブラリなどで確認してください。

ひらがな・カタカナ・漢字

URL・IPv4・色コード

貪欲と非貪欲(最短一致)

*、+、a{2,3}は、できるだけ長く取る貪欲(greedy)がデフォルトです。後ろに?を付けると、できるだけ短く取る非貪欲(lazy)になります。<b>一つ目</b> そして <b>二つ目</b>に対して、<b>.*<\/b>は最初の開始タグから最後の終了タグまでを1つのマッチにし、<b>.*?<\/b>は2つに分けて拾います。最後の2つのプリセットで、マッチ数が1個と2個に分かれるのを確かめてください。 より安全なのは、[^<]*のように「閉じる文字を除く」否定文字クラスを使う方法で、動作も予測しやすくなります。

ReDoS:正規表現が処理を止めてしまうとき

JavaScriptのエンジンはバックトラック方式で、うまくいかない経路を戻って別の経路を試します。繰り返しの中にさらに繰り返しがあるパターンでは、入力が長くなるにつれて試行回数が急増し、これをReDoS(正規表現によるサービス拒否)と呼びます。 典型例が^(a+)+$です。aが並んだ末尾にbがある文字列に対し、内側と外側のプラスにaをどう割り振るか、全部の組み合わせを試してから失敗します。Node.jsで測ったところ、aが24個で約0.1秒、26個で約0.4秒、1つ増えるごとにほぼ倍になりました(数値は環境によります)。40個なら実質終わりません。 同じ意図の^a+$は一瞬で終わります。このページで試してタブが固まった場合は、ブラウザの応答を待つか、タブを閉じてください。

計算が100msを超えると、ステータス行に警告を出します。ただし実行中に止めることはできないため、疑わしいパターンはまず短い文字列で試してください。

グループ・名前付きグループ・置換

かっこで囲んだ部分はキャプチャグループになり、マッチ一覧に番号つきで表示されます。(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})のように名前を付ければ、番号ではなく名前で値を読めるので、パターンが長くなっても管理しやすくなります。 置換欄では$1(1番のグループ)、$&(マッチ全体)、$<名前>(名前付きグループ)が使えます。検算例として、日付のパターンに2026-10-13を入れ、置換を$3/$2/$1にすると13/10/2026になります。名前付きグループのプリセットも$<day>/$<month>/$<year>で同じ結果になります。 マッチに加わらなかった省略可能なグループは「(なし)」と表示されます。

つまずきやすい点

他の言語との違い

正規表現を使わないほうがよい場合

HTML、XML、JSONのような入れ子構造は、正規表現だけで正しく解釈することはできません。専用のパーサーを使ってください(JSONならJSONフォーマッターが適しています)。また、メールの受信箱が実在するか、日付が暦に存在するか、電話番号が使われているかといった意味の確認も正規表現の役割ではありません。 正規表現は形式のフィルターとして使い、意味の確認は別の処理に任せましょう。

よくある質問

キャプチャグループはどこで確認できますか?

確認したい部分をかっこで囲むと、マッチ一覧の各項目の下にグループ番号ごとの値が表示されます。名前付きグループは名前も一緒に表示されます。

パターンが間違っているとどうなりますか?

構文エラーがあると、ブラウザが返したエラーメッセージがステータス行に表示されます。かっこや角かっこの対応、特殊文字のエスケープ、繰り返す対象のない量指定子、フラグの誤りを確認してください。

gフラグを外すとなぜ1件しか出ないのですか?

gがないと、JavaScriptの正規表現は最初のマッチで止まります。すべてのマッチを探したり、すべてを置換したりするにはgを付けてください。

入力した文字列は外部に送信されますか?

いいえ。パターンとテスト文字列は、このページ上でブラウザ自身の正規表現エンジンが処理します。ツールがそれらを送信することも保存することもありません。

メールアドレスの正規表現で、有効かどうか完全に判定できますか?

いいえ。判定できるのは形式だけで、実在するかどうかは分かりません。確認メールの送信がもっとも確実で、正規表現は明らかなタイプミスを除く一次フィルターとして使うのが適切です。

関連ツール