正規表現早見表|メタ文字一覧と実用パターン集
正規表現(regex)のメタ文字・略記文字クラス・量指定子・アンカー・グループ・先読み後読み・バックリファレンスを網羅。メールアドレス・電話番号・URL・IPv4・郵便番号・日付・UUID等の実用パターン12種と、その場で試せる正規表現テスター付き。JavaScript/Python/PHP/Ruby対応のチートシート。
📌 頻出する実用パターン TOP12
| 用途 | 正規表現 | 例 |
|---|---|---|
| 数字のみ | ^[0-9]+$ | 12345 |
| 英字のみ | ^[a-zA-Z]+$ | Hello |
| 半角英数字 | ^[a-zA-Z0-9]+$ | abc123 |
| メールアドレス | ^[\w.+-]+@[\w-]+\.[\w.-]+$ | foo@bar.com |
| URL | ^https?://[\w./?=&-]+$ | https://example.com |
| 電話番号(日本) | ^0\d{1,4}-\d{1,4}-\d{4}$ | 03-1234-5678 |
| 郵便番号(日本) | ^\d{3}-\d{4}$ | 100-0001 |
| IPv4アドレス | ^(\d{1,3}\.){3}\d{1,3}$ | 192.168.1.1 |
| 日付(YYYY-MM-DD) | ^\d{4}-\d{2}-\d{2}$ | 2026-05-17 |
| 時刻(HH:MM:SS) | ^\d{2}:\d{2}:\d{2}$ | 12:30:45 |
| UUID v4 | ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ | xxxxxxxx-... |
| HTMLタグ | <[^>]+> | <div> |
※ オレンジ網掛けは特に頻出。下記のテスターでパターンと文字列を入れて即試せます。
🧪 正規表現テスター
パターンとテスト文字列を入力 → リアルタイムでマッチ結果をハイライト表示。JavaScript の RegExp で実装。
検索結果
上の欄にメタ文字を入力してください。クイックボタンからも選べます。
このページについて
正規表現(regex)はテキストパターンを表現する強力なツールで、検索・置換・バリデーション・データ抽出などプログラミングの多くの場面で使われます。本ページではメタ文字32種と実用パターン12種を網羅し、その場で試せる正規表現テスターも併設しました。
Web開発者・データエンジニア・QAエンジニア・学習中のプログラマまで、「メアドの正規表現は?」「貪欲マッチって何?」「グループの参照ってどう書く?」といった現場で頻発する疑問に即答できる構成です。JavaScript・Python・PHP・Ruby・Goで共通動作するパターンを中心に選定しています。
正規表現メタ文字 完全一覧
カテゴリ別にメタ文字・略記・量指定子・アンカー・グループを網羅。検索ツールで記号入力で該当行をハイライト。
| 記号 | カテゴリ | 意味 | 使用例 |
|---|---|---|---|
. | メタ文字 | 任意の1文字(改行を除く・sフラグで改行も) | a.c → abc, axc, a1c |
* | メタ文字 | 直前の要素を0回以上繰り返し | ab*c → ac, abc, abbc, abbbc |
+ | メタ文字 | 直前の要素を1回以上繰り返し | ab+c → abc, abbc(acはNG) |
? | メタ文字 | 直前の要素を0回または1回(オプション) | colou?r → color, colour |
^ | アンカー | 行・文字列の先頭 | ^Hello → 行頭のHelloのみ |
$ | アンカー | 行・文字列の末尾 | end$ → 行末のendのみ |
[abc] | 文字クラス | a, b, c のいずれか1文字 | [aeiou] → 母音1文字 |
[^abc] | 文字クラス | a, b, c 以外の1文字(否定) | [^0-9] → 数字以外 |
[a-z] | 文字クラス | 範囲指定(a〜z) | [A-Za-z0-9] → 英数字1文字 |
\d | 略記文字クラス | 数字 1文字 = [0-9] | \d{3} → 000〜999 |
\D | 略記文字クラス | 数字以外 1文字 = [^0-9] | \D+ → 数字以外の連続 |
\w | 略記文字クラス | 単語構成文字 = [A-Za-z0-9_] | \w+ → 英数字_の連続 |
\W | 略記文字クラス | 単語構成文字以外 = [^A-Za-z0-9_] | \W → 記号や空白 |
\s | 略記文字クラス | 空白文字(スペース・タブ・改行) | \s+ → 連続空白 |
\S | 略記文字クラス | 空白以外の文字 | \S+ → 非空白の連続 |
\b | アンカー | 単語境界 | \bword\b → 単語wordのみ |
\B | アンカー | 単語境界以外 | \Bing → wingやswingのing |
{n} | 量指定子 | ちょうどn回 | \d{4} → 数字4桁 |
{n,} | 量指定子 | n回以上 | \d{3,} → 数字3桁以上 |
{n,m} | 量指定子 | n〜m回 | \d{1,3} → 数字1〜3桁 |
*? | 非貪欲 | 0回以上(最短マッチ) | <.*?> → <a><b>の<a>のみ |
+? | 非貪欲 | 1回以上(最短マッチ) | a.+?b → abで終わる最短 |
(abc) | グループ | キャプチャグループ(\1で参照可) | (\d+)-\1 → 123-123 |
(?:abc) | グループ | 非キャプチャグループ(参照不要時) | (?:https?):// → http or https |
(?P<n>abc) | グループ | 名前付きキャプチャ(Python)/?<n>(JS) | (?P<year>\d{4}) |
(?=abc) | 先読み | 肯定先読み(後にabcが続く位置) | \d+(?=円) → 100円の100 |
(?!abc) | 先読み | 否定先読み(後にabcが続かない位置) | \d+(?!円) → 円が続かない数字 |
(?<=abc) | 後読み | 肯定後読み(前にabcがある位置) | (?<=¥)\d+ → ¥100の100 |
(?<!abc) | 後読み | 否定後読み(前にabcがない位置) | (?<!¥)\d+ → ¥が前にない数字 |
a|b | 選択 | a または b | cat|dog → catかdog |
\1 \2 | バックリファレンス | 1番目・2番目のキャプチャ参照 | (\w+) \1 → 同じ単語の繰り返し |
\\ | エスケープ | メタ文字のリテラル化(. \* + 等) | \. → ピリオド文字, \$ → ドル記号 |
カテゴリ別の解説
メタ文字と文字クラス
. は任意の1文字、[abc] は a/b/c のいずれか、[^abc] は否定、[a-z] は範囲指定。略記の \d \w \s はそれぞれ「数字・単語構成文字・空白文字」を表します。大文字版 \D \W \S は否定形。
量指定子(繰り返し)
*(0回以上)・+(1回以上)・?(0/1回)・{n}(ちょうどn回)・{n,m}(n〜m回)。末尾に ? を付けると非貪欲マッチ(*? +? ??)になり、最短マッチを取ります。HTMLタグ抽出では非貪欲が必須です。
アンカー(位置)
^ は行頭、$ は行末、\b は単語境界、\B は単語境界以外。複数行モード(mフラグ)では ^/$ が各行の頭末に変わります。
グループとキャプチャ
(...) はキャプチャグループで \1 \2 で参照可、置換では $1 $2。(?:...) は非キャプチャ(参照しないグループ化)。(?P<name>...) (Python) / (?<name>...) (JS) で名前付きキャプチャ。
先読み・後読み(lookaround)
位置だけ判定してマッチに含めない高度な機能。(?=abc) 肯定先読み、(?!abc) 否定先読み、(?<=abc) 肯定後読み、(?<!abc) 否定後読み。『円が後ろに続く数字』のような複雑な抽出で威力を発揮します。
フラグ(オプション)
g 全体検索、i 大小無視、m 複数行、s dotall(. を改行にも対応)、u Unicode、y 粘着。複数指定可: /pattern/gims など。
正規表現がパターンを表す仕組み
正規表現は、文字列のパターンを記号で表現するための言語です。文字クラス([])・量指定子(* + ?)・アンカー(^ $)などを組み合わせて、「どのような文字の並びにマッチするか」を簡潔に記述します。
量指定子は既定で貪欲(できるだけ長く一致)に動くため、最短で一致させたいときは ? を付けます(.*?)。この貪欲・非貪欲の挙動を理解することが、意図しないマッチを防ぐ鍵になります。
ピリオドやアスタリスクなどのメタ文字を文字そのものとして扱うときはエスケープが必要です。正規表現は、検索・置換・入力検証・ログ抽出など幅広い場面で強力な道具になります。
使い方・選び方のポイント
使用場面
テキストの検索・置換、入力値の検証、ログ抽出、データ整形に使います。
よくある間違い
メタ文字(. * + など)のエスケープ漏れ、貪欲(.*)と非貪欲(.*?)の混同、改行・大小文字の扱いの誤りに注意します。
選び方のコツ
①基本は文字クラス[]・量指定子*+?・アンカー^$ ②最短一致は*?を使う ③テストツールで部分一致を確認しながら段階的に組む。
よくある質問
Q1. \d と [0-9] の違いは?
A. 基本的に同じですが、Unicodeモード(uフラグ)では \d が ASCII数字のみにマッチするのに対し、JavaScript では \d は常に [0-9] と等価です。Python は re.UNICODEモードで \d が全角数字や他言語の数字にもマッチします。明示的に半角数字だけ取りたいなら [0-9] が安全です。
Q2. 貪欲マッチと非貪欲マッチの違いは?
A. 貪欲(greedy)は可能な限り長くマッチ(* + ?)、非貪欲(lazy)は可能な限り短くマッチ(*? +? ??)。例えば <.*> と <.*?> の違いは、<a><b> という文字列に対し、貪欲は<a><b> 全体を、非貪欲は <a> のみをマッチします。HTMLタグ抽出では非貪欲が必須です。
Q3. メールアドレスの完璧な正規表現はある?
A. RFC 5322完全準拠の正規表現は500文字超になり実用的でないため、現実的には ^[\w.+-]+@[\w-]+\.[\w.-]+$ などで十分です。完璧を目指すなら正規表現だけでなく、メール送信時の到達性確認(double opt-in)を併用するのが定石です。
Q4. JavaScriptとPHPで正規表現の書き方は違う?
A. 基本構文は共通ですが、JSは /pattern/flags のスラッシュ記法、PHPは preg_match('/pattern/flags', $str) の文字列記法。後読み(?<=...)はJSが新しい仕様で動かない環境も(ES2018+)。Pythonは (?P<name>...) の名前付きグループが独特です。
Q5. 先読み(lookahead)はどんな時に使う?
A. パターンの前後の文脈を条件にしつつ、マッチ対象に含めたくないときに使います。例えば \d+(?=円) は『円が後ろに続く数字』にマッチしますが、円自体はキャプチャに含まれません。価格抽出やパスワード強度チェック(英大小数字混在等)で使います。
Q6. 正規表現が遅い時の対処法は?
A. 主因はバックトラック爆発です。.* や .+ の連続使用を避け、可能な限り [^abc]+ など否定文字クラスで明示。非貪欲(.*?)を使う、文字クラスを限定する、アンカー(^ $)を活用するのが基本対策。最悪のパターンは (a+)+ のような『ネスト量指定子』で、ReDoS攻撃の対象になります。
Q7. 改行を含むテキストにマッチさせるには?
A. . は通常改行にマッチしないので、s フラグ(dotallモード)を使います。/pattern/s で . が改行も含めて任意文字となります。または [\s\S]+ のように『空白と非空白』を組み合わせる方法も。JavaScriptでは ES2018+ で /s フラグが使えます。
Q8. 大文字小文字を区別しない方法は?
A. i フラグ(case-insensitive)を使います。例: /hello/i は Hello・HELLO・hELLo 等すべてにマッチ。一部だけ大小無視したい場合は (?i)pattern(?-i) のインラインフラグを使う方法もあります(言語による)。
Q9. キャプチャグループと非キャプチャグループの違いは?
A. (...) はキャプチャグループで、\1 \2 で参照したり、置換時に $1 $2 で取り出せます。(?:...) は非キャプチャグループで、グループ化のみ行い参照できません。参照不要なグルーピングには非キャプチャを使うとパフォーマンスが向上します。
Q10. 正規表現で日本語にマッチさせるには?
A. ひらがな[-ゟ]、カタカナ[゠-ヿ]、漢字[一-鿿]、半角カナ[・-゚]のUnicode範囲を使います。Pythonなら正規表現に re.UNICODE フラグ、JavaScriptなら u フラグ + \p{Script=Han} のようにUnicodeプロパティが使えます(ES2018+)。
関連する早見表
- Linuxコマンド早見表 — grep/sed/awkで使う正規表現
- HTTPステータスコード — ログ解析の組み合わせに
- サブネットマスク — IPv4正規表現と関連
- SQLデータ型早見表 — LIKE/REGEXPやバリデーションの型設計に
関連規格・参考資料
- ECMAScript Language Specification (ECMA-262) — JavaScript正規表現の仕様
- POSIX.2 Basic/Extended Regular Expressions — Unix系の標準
- Perl Compatible Regular Expressions (PCRE) — PHP/多くの言語の基盤
- RFC 5234「ABNF」 — 構文記法(参考)
- MDN Web Docs / Python re module / regex101.com
最終更新: 2026-07-04