##はじめに
メールアドレスの正規表現(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)
##参考