開発者がブックマークすべき正規表現パターン20選
最も使える正規表現の実践チートシート — メール、URL、電話番号、IP、日付など。コピペですぐ使えます。
正規表現は、うまくいくと魔法のようで、うまくいかないと発狂しそうになるツールです。何年もかけて便利なパターンを集めてきましたが、この20個が繰り返し使うものです。
このページをブックマークしてください。必ず戻ってきます。
忘れがちな基本
パターンの前に、つまずきやすい部分の復習:
.は任意の文字にマッチ(改行を除く)*は0回以上、+は1回以上、?は0回または1回\dは数字、\wは単語文字、\sは空白^は文字列の先頭、$は文字列の末尾()はグループ、[]は文字クラス、{}は量指定
20のパターン
1. メールアドレス
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
現実のほとんどのメールをカバー。RFC 5322完全準拠ではありませんが、有効なアドレスの99%を処理します。
2. URL(HTTP/HTTPS)
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
パスとクエリ文字列を含むHTTPとHTTPS両方のURLにマッチ。
3. 電話番号(国際)
^\+?[1-9]\d{1,14}$
E.164形式 — 国際的に機能します。日本固定電話用:^0\d{1,4}-?\d{1,4}-?\d{4}$
4. IPv4アドレス
^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$
各オクテットが0-255であることを検証。シンプルなパターンは999.999.999.999のような無効なアドレスも受け入れてしまいます。
5. IPv6アドレス
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
基本的なフル形式IPv6。短縮表記(::)はカバーしませんが、最も一般的な形式を処理します。
6. 日付(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
ISO 8601日付形式。月と日の範囲を検証しますが、2月31日のような不可能な日付はチェックしません。
7. 時刻(HH:MM、24時間)
^([01]\d|2[0-3]):([0-5]\d)$
24時間形式、00:00から23:59。
8. 16進カラーコード
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
3桁と6桁の両方のhexカラーにマッチ:#fff、#1a2b3c。
9. 強力なパスワード
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
大文字、小文字、数字、特殊文字を含む最低8文字。最低文字数と許可文字は必要に応じて調整してください。
10. ユーザー名
^[a-zA-Z0-9_-]{3,20}$
英数字とアンダースコア、ハイフン、3-20文字。
11. HTMLタグ
<\/?[\w\s]*>|<.+[\W]>
開始タグと終了HTMLタグにマッチ。実務でのHTMLパースに正規表現を使わないでください — 適切なパーサーを使いましょう。ただし、素早い検索には使えます。
12. 空白トリミング
^\s+|\s+$
前後の空白にマッチ。クリーンアップ操作に便利。
13. 重複単語
\b(\w+)\s+\1\b
「the the」や「is is」のような繰り返し単語をキャッチ。校正に最適。
14. ファイル拡張子
\.([a-zA-Z0-9]+)$
ファイル拡張子を抽出。グループ1でドットなしの拡張子だけ取得。
15. スラッグ(URL用文字列)
^[a-z0-9]+(?:-[a-z0-9]+)*$
URLスラッグの検証:小文字、数字、ハイフン。連続ハイフンなし、ハイフンで始まったり終わったりしない。
16. クレジットカード番号(基本)
^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})$
Visa、MasterCard、American Expressのパターン検出。フォーマット検証のみ — 実際の検証には必ず決済プロセッサを使ってください。
17. UUID v4
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
正しいバージョンとバリアントビットを持つUUID version 4の形式を検証。
18. JSON文字列値
"(?:[^"\\]|\\.)*"
バックスラッシュエスケープを正しく処理するJSON文字列値にマッチ。
19. CSSプロパティ
([a-z-]+)\s*:\s*([^;]+);
CSSプロパティ-値ペアを抽出。グループ1がプロパティ名、グループ2が値。
20. Markdownリンク
\[([^\]]+)\]\(([^)]+)\)
[テキスト](url) リンクにマッチ。グループ1がリンクテキスト、グループ2がURL。
正規表現を使う際のヒント
シンプルから始めて積み上げる。 完璧なパターンを一度に書こうとしないでください。動く最もシンプルなバージョンから始めて、エッジケース処理を追加します。
テスターを使う。 デプロイ前に必ず実データでパターンをテスト。エッジケースに驚かされます。
コメントを追加。 ほとんどの正規表現エンジンは、コメントと空白を追加できる冗長モードをサポートしています。
使わないべき時を知る。 HTMLのパース、複雑な日付の検証、深くネストされた構造の処理 — これらには適切なパーサーを使いましょう。
テキスト差分で正規表現置換が正しい出力を生成したか確認したり、文字カウンターでマッチした文字列の長さをチェックすることもできます。
正規表現は練習で上達するスキルです。すべての構文規則を暗記する必要はありません — パターンを読み、ニーズに合わせて修正できる程度に知っていれば十分です。このチートシートを手元に置いておけば、Stack Overflowで過ごす時間が減り、実際に物を作る時間が増えるでしょう。