RFCに準ずるメールアドレスの正規表現


"@"マークの前後で分けて定義しました。(= ユーザー名とドメイン名で分けて定義した)
これで大体はカバーできているはず。

ユーザー名の正規表現 = /^[-a-z0-9~#&'*/?`\|!$%^&*_=+}{\'?]+(\.[-a-z0-9~#&'*/?`\|!$%^&*_=+}{\'?]+)*$/;
ドメイン名の正規表現 = /([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)|(docomo\ezweb\softbank)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;

以下は詳細です
・携帯キャリアメール(ezweb.ne.jp、docomo.ne.jp、softbank.ne.jpの3つ)は有効とする
・以下の例のようなものは無効とする
 [email protected]
 [email protected]
 [email protected]
 [email protected]
 ab[[email protected]
 ab@[email protected]
・以下の例のようなものは有効とする
 user+mailbox/department=[email protected] (dot-atom)
 !#$%&'*+-/=?^_`.{|}[email protected] (dot-atom

以下2点はカバーできていない
・“" "”でくくられたquoted-stringの形式であれば、「 ( ) < > [ ] : ; @ , 」のようなASCII文字を使用できる
・さらにquoted-string中では、“\”を前につけたquoted-pairの形式であれば、「 \ " 」のようなASCII文字を使用できる