LoginSignup
5
3

More than 1 year has passed since last update.

【JavaScript】メールアドレスの正規表現(RFC準拠)を解読する

Last updated at Posted at 2021-05-15

はじめに

メールアドレスの正規表現(RFC準拠)を解読しました。
^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

上記のメールアドレスの正規表現はVue.js公式ドキュメントでも使用されており、信頼性は高いと思われます。

正規表現とは...?という方はこちらの記事や当記事の最下部にある参考サイトをご覧になってからお読みください。

この記事では上記正規表現について、

  • @マーク以前
  • @マーク以後

に分けて解読します。

@マーク以前

^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))

一番先頭の^()は開始マークなので無視して、
分解すると...
① ([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*
または
② ".+"

①と②それぞれ見ていきます。

([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*

<>()[].,;:空白文字@"以外の文字が1文字以上
+
.マーク<>()[].,;:空白文字@"以外の文字の繰り返しが一回以上

上記を満たした要素が0個以上

ex) hoge.hoge

Point
[^ABC]でABC以外にマッチという意味

".+"

""で囲った文字が1文字以上

ex)"hoge"

@以後

((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

一番最後の()$は終了マークなので無視して、
分解すると...
① (\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])
または
②(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})

①と②それぞれ見ていきます。

(\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])

[]内が

0~9の数字が1文字以上3文字以下
+
(.マーク0~9の数字が1文字以上3文字以下)×3回

ex) [0.0.0.0]

(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})

アルファベット小文字/大文字/数字が1文字以上と.マーク
+
アルファベット小文字/大文字が2文字以上

ex) gmail.com

有効なメールアドレス例

wikiより引用

Abc@example.com (dot-atom)
Abc.123@example.com (dot-atom)
user+mailbox/department=shipping@example.com (dot-atom)
!#$%&'*+-/=?^_`.{|}~@example.com (dot-atom)
"Abc@def"@example.com (quoted-string)
"Fred\ Bloggs"@example.com(quoted-pairを含んだquoted-string)
"Joe.\Blow"@example.com(quoted-pairを含んだquoted-string)

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3