正規表現実践大全:メール・電話番号・日付形式のよく使う検証パターン完全まとめ

正規表現(Regular Expression、Regex)の文法自体は難しくありませんが、「正しい」検証パターンをゼロから書くには、多くのエッジケースを考慮する必要があります。本文では文法の解説はせず、すぐに使える実践パターンを直接提供します。各パターンには説明・境界ケース・注意事項が付いています。正規表現ツールに貼り付けてテストできます。

使い方:各パターンはそのままコピーして正規表現ツールに貼り付け、入力データが要件を満たしているか確認してからコードに組み込んでください。

1. メールアドレス検証

メール形式は単純に見えますが、RFC 5322 の完全な仕様は非常に複雑です。以下は実用的な「十分」なバージョンで、実際のメールアドレスの 99% をカバーします:

/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/
テスト文字列結果説明
[email protected]✅ 通過標準形式
[email protected]✅ 通過プラス記号・サブドメイン含む
user@example❌ 拒否トップレベルドメインなし
@example.com❌ 拒否ローカル部分なし
user @example.com❌ 拒否スペース含む

注意:メール検証の最終手段は確認メールの送信です。Regex は明らかな形式エラーを除外できますが、メールが実際に存在するかは確認できません。

2. 日本の携帯電話番号

/^0[789]0\d{8}$/

日本の携帯電話番号は 070/080/090 から始まる 11 桁です。ハイフンありの場合:

/^0[789]0-\d{4}-\d{4}$/

3. 日付形式(YYYY-MM-DD)

/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

このパターンは月(01〜12)と日(01〜31)の有効範囲を検証しますが、その月に実際に何日あるかは検証できません(例:2023-02-30 は通過します)。正確な日付の有効性にはプログラムロジックが必要です。

4. URL

/^https?:\/\/[^\s/$.?#].[^\s]*$/i

http と https をカバーし、複雑なパス・クエリパラメータ・ハッシュを許可し、スペースを含む無効な URL を除外します。HTTPS のみ許可する場合:

/^https:\/\/[^\s/$.?#].[^\s]*$/i
すぐにテスト:URL リストを正規表現ツールに貼り付けて「複数行モード」を選択すると、形式エラーの URL を素早く絞り込めます。

5. IPv4 アドレス

/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/

各 octet の範囲(0〜255)を正確に検証し、999.999.999.999 のような形式は正しくても値が無効なケースを防ぎます。

6. パスワード強度ルール

基本(8文字以上、英字と数字を含む):

/^(?=.*[a-zA-Z])(?=.*\d).{8,}$/

中程度(8文字以上、大文字・小文字・数字を含む):

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/

厳格(8文字以上、大文字・小文字・数字・特殊文字を含む):

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/

7. 数値形式

正の整数:

/^\d+$/

整数(マイナス符号含む):

/^-?\d+$/

浮動小数点数:

/^-?\d+(\.\d+)?$/

8. 日本語・中国語文字(CJK 統合漢字)

/^[\u4e00-\u9fff\u3040-\u30ff]+$/

このパターンは CJK 統合漢字と日本語の平仮名・片仮名をカバーします。

9. 日本の郵便番号

/^\d{3}-\d{4}$/

ハイフンなしの場合:

/^\d{7}$/

10. HTML タグの除去

/<[^>]+>/g

空文字列に置換することでテキストから HTML タグを除去できます。JavaScript の例:

const cleanText = htmlString.replace(/<[^>]+>/g, '');

注意:完全な HTML 構造の解析に Regex は推奨されません。完全な HTML 解析には DOM Parser を使用してください。

これらのパターンを今すぐ試す:正規表現ツールを開き、上記のパターンを「正規表現」フィールドに貼り付け、テストデータを「テスト文字列」エリアに入力すると、どの文字列が通過しどれが拒否されるかをリアルタイムで確認できます。

よくあるミスと注意事項

1. ^$ の忘れ

アンカーのないパターンは「部分一致」で通過します。^$ を追加することで文字列全体が形式に合致していることを確認できます。

2. 過度に厳格なパターンによる誤拒否

{2,} を使用することで、新しいトップレベルドメインを持つ正当なメールの誤拒否を防げます。

3. 大文字・小文字の区別

URL パターンには i フラグを追加し、Email パターンは通常大文字・小文字を区別します。

まとめ

  • すべてのパターンは正規表現ツールでリアルタイムテスト可能
  • 最終的な検証はサーバーサイドで行う——Regex はフロントエンドの最初のフィルターに過ぎない
  • 複雑な検証ロジック(日付の有効性、チェックディジット)にはプログラムロジックが必要
  • 2つのパターンの差異を比較するにはテキスト差分ツールが便利