zawatech

【よく使う】正規表現のチートシート

タグ
正規表現
カテゴリ
チートシート
Xこの記事をポストする
この記事をLINEでシェア

主に入力フォームで使う正規表現をまとめたチートシートです。

必要最低限な、これを抑えておけばOKなものを厳選しました。

郵便番号

ハイフンなし7桁

^\d{7}$

【例】⭕️ 1000001
    ✖︎ 100-0001

ハイフンあり7桁

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

【例】⭕️ 100-0001
    ✖︎ 1000001

どっちも許容

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

【例】⭕️ 100-0001
   ⭕️ 1000001
    ✖︎ 100–0001(←ハイフン2個)

電話番号

固定電話のみ(ハイフンなし)

^0\d{9}$

【例】⭕️ 0355556666
    ✖︎ 4445556666(0から始まっていない)
    ✖︎ 03-5555-2222(ハイフンは許さない)

0X-XXXX-XXXX
0XX-XXX-XXXX
0XXX-XX-XXXX
0XXXX-X-XXXX

固定電話は、↑の4パターンだけと決まっています。

なのでハイフンがない場合は、最初が0で後ろが9文字だけ。

固定電話のみ(ハイフンあり)

^0(\d-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d)-\d{4}$

【例】⭕️ 03-5555-6666
    ✖︎ 444-555-6666(0から始まっていない)
    ✖︎ 0355552222(ハイフンなしは許さない)

0X-XXXX-XXXX
0XX-XXX-XXXX
0XXX-XX-XXXX
0XXXX-X-XXXX

固定電話はこの4パターンなので、カッコ内で『 | (または)』を使って表現。

携帯電話のみ(ハイフンなし)

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

【例】⭕️ 09011112222
   ⭕️ 08033334444
   ⭕️ 07055556666
    ✖︎ 05077778888(050はありえない)
    ✖︎ 090-1111-2222(ハイフンは許さない)

携帯電話の番号は最初の3文字は『070』『080』『090』の3パターンで、

その後は8文字の数字と決まっています。

携帯電話のみ(ハイフンあり)

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

【例】⭕️ 090-1111-2222
   ⭕️ 080-3333-4444
   ⭕️ 070-5555-6666
    ✖︎ 050-7777-8888(050はありえない)
    ✖︎ 09077778888(ハイフンなしは許さない)

携帯電話のみ(どっちも許容)

こちらは、↑の2つどっちも比べてバリデーションするのが無難です。
(『-?』を使うと、090-66663333を許容してしまうため)

jsで書くとこんな感じ。

let valid1 = /^0[789]0\d{8}$/;
let valid2 = /^0[789]0-\d{4}-\d{4}$/;
let input = "090-8888-3333";
if(input.match(valid1) || input.match(valid2)) {
 console.log("一緒");
} else {
 console.log("違う");
}
> 一緒

メールアドレス

ある程度厳密なバージョン

^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$

【例】⭕️ hoge@huga.com
   ⭕️ a@z
    ✖︎ hoge@!com(@の後に!は使えない)
    ✖︎ hogehuga.com(@がない)

こちらはある程度妥協した正規表現。

RFCで定義されているメールアドレスはとても厳密なのである程度妥協をしないとキリがないです。

そこでHTML5で標準搭載されているinput[type=email]の正規表現をそのまま使ってしまおうというのが↑です。

シンプルなバージョン

^[^\s]+@[^\s]+$

【例】⭕️ hoge@huga.com
   ⭕️ a@z
   ⭕️ !@! (@の前後は空白以外ならOK)
    ✖︎ hoge@ (@の後に何もない)
    ✖︎ hogehuga.com(@がない)

こちらはシンプルなバージョン。

[空白以外の文字]@[空白以外の文字]

であればなんでも通ってしまいます。

ですが必要最低限で良い場合はこちら。

Xこの記事をポストする
この記事をLINEでシェア
zawa1205

zawa1205

Qiita
GitHub
mail

webフロントエンドエンジニア