はじめに:
はじめまして。学生エンジニアの@huyunokiです。
この記事はJavaの@Patternやその他のバリデーションで、必要な正規表現パターンを素早く確認するためのチートシートです。
Javaの文字列リテラルとして記述するため、正規表現のメタ文字(\d, \wなど)のバックスラッシュは二重(\\)でコピーされるようにしています。そのままコピーしてご使用ください。
正規表現パターン一覧:
| 用途 | パターン (純粋な正規表現) | 説明 |
|---|---|---|
| 半角数字のみ (整数) | ^\d+$ |
1文字以上の半角数字(0-9)のみを許可。 |
| 半角数字 (桁数指定) | ^\d{4}$ |
ちょうど4桁の半角数字。{min,max}で範囲指定も可能。 |
| 半角英字のみ | ^[a-zA-Z]+$ |
1文字以上の半角英字(大文字・小文字)のみを許可。 |
| 半角英数字のみ | ^[a-zA-Z0-9]+$ |
1文字以上の半角英数字のみを許可。 |
| 半角英数字とハイフン | ^[a-zA-Z0-9\-]+$ |
IDやスラッグなどでよく利用。 |
| メールアドレス | ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,63}$ |
簡易的なメールアドレス形式のチェック。 |
| パスワード (基本) | ^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{8,}$ |
最低8文字で、英字と数字をそれぞれ1文字以上含む。 |
| パスワード (厳格) | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()])[A-Za-z\d!@#$%^&*()]{8,}$ |
最低8文字、小文字、大文字、数字、記号をそれぞれ1文字以上含む。 |
| 日本円 (カンマ区切りなし) | ^([1-9]\d*|0)(\.\d{1,2})?$ |
整数または小数点以下2桁までの数値(0を含む)。 |
| URL (簡易) | ^(http|https)://[a-zA-Z0-9\-]+\.[a-zA-Z0-9.\-]+(/.*)?$ |
http:// または https:// で始まる簡易チェック。 |
| 全角ひらがなのみ | ^[\u3040-\u309F]+$ |
1文字以上の全角ひらがなのみを許可。 |
| 全角カタカナのみ | ^[\u30A0-\u30FF]+$ |
1文字以上の全角カタカナのみを許可。 |
| 全角漢字・ひらがな・カタカナ | ^[\u3005\u3007\u303B\u3400-\u9FFF\uF900-\uFAFF\u20000-\u2FFFF\u3041-\u3096\u30A1-\u30FA]+$ |
一般的な全角日本語文字のチェック。 |
| 日本の郵便番号 | ^\d{3}-\d{4}$ |
3桁-4桁の形式。例: 123-4567。 |
| 日本の電話番号 | ^0\d{1,4}-\d{1,4}-\d{4}$ |
0から始まり、ハイフンで区切られた形式(市外局番の桁数は問わない)。 |
| 日付 (YYYY-MM-DD) | ^\d{4}-\d{2}-\d{2}$ |
日付の形式チェックのみ(妥当性は検証しない)。 |
よく使うメタ文字と量指定子のメモ:
| 記号 | パターン | 意味 |
|---|---|---|
| 行の開始 | ^ |
文字列の先頭(行の開始)にマッチ。 |
| 行の終了 | $ |
文字列の末尾(行の終了)にマッチ。 |
| 数字 | \d |
任意の半角数字([0-9]と同じ)。 |
| 数字以外 | \D |
任意の半角数字以外。 |
| 文字 | \w |
任意の単語構成文字([a-zA-Z0-9_]と同じ)。 |
| 空白文字 | \s |
スペース、タブ、改行などの空白文字。 |
| 任意の1文字 | . |
改行以外の任意の1文字。 |
| 0回以上 | * |
直前の要素が0回以上繰り返す。 |
| 1回以上 | + |
直前の要素が1回以上繰り返す。 |
| 0回または1回 | ? |
直前の要素が0回または1回出現する。 |
| 繰り返し回数指定 | {n} |
直前の要素がちょうどn回繰り返す。 |
| 繰り返し回数範囲 | {min,} |
直前の要素がmin回以上繰り返す。 |
| 繰り返し回数範囲 | {min,max} |
直前の要素がmin回からmax回の範囲で繰り返す。 |
| 選択肢 | (A|B) |
グループ内のAまたはBにマッチ。 |
| 文字クラス | [abc] |
角括弧内のいずれか1文字にマッチ。 |
| 否定文字クラス | [^abc] |
角括弧内以外の1文字にマッチ。 |
| 先読み (肯定) | (?=...) |
パターンの直後に...が存在することを条件にする(マッチ結果には含まれない)。 |