メールアドレスの正規表現

更新日 2019/5/3
カウンター

戻る
Perlメモへ - メールアドレスの正規表現
Perl正規表現雑技

更新履歴

2019/05/03 「制御文字を除去する」「参考文献」RFC5321日本語訳のリンク修正
2009/08/13 $atextのバグ修正
2009/05/06 「正規表現を簡略化する」追記
2009/04/29 「旧形式を削除する」追記
2009/04/13 「IPアドレスを除去する」追記

目次


RFCに準拠したメールアドレスの正規表現


RFC 5322  addr-spec   RFC 5322  14,277 perl 5.10
(?:(?:(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x0
9]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x
0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(
?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|
(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0
E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\
x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:
[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)
[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x
20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?(?:[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)*)(?:(?:(?:(?:[\x20
\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20
\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x
20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x
5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x
20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D))
)|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]
+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A)
)?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:
[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)
[\x20\x09]+)*)))?)|(?:(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x
09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x2
0\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x2
0\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C
\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01
-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*
(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+
)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]
+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\
x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?"(?:(?:(?:
[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)
[\x20\x09]+)*))?(?:(?:[\x21\x23-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\
x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-
\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))))*(?:(?:[\x20\x09]*(?:\x0D
\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?"(
?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\
x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21
-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?
:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\
x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09
]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x
09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x
09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]
+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?)|(?:(?:(?:(?:(?:(?:(?:[\x20\x09]
*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]
+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x0
9]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x
7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x0
9])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-
1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x
20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20
\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20
\x09]+)*)))?[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:(?:(?:(?:[\x20\x09]
*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]
+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x0
9]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x
7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x0
9])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-
1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x
20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20
\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20
\x09]+)*)))?)|(?:(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|
(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09
]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09
]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-
\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08
\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x
0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?
\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x
09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?"(?:(?:(?:[\x20
\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20
\x09]+)*))?(?:(?:[\x21\x23-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\
x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\
x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))))*(?:(?:[\x20\x09]*(?:\x0D\x0A)
)?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?"(?:(?:
(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0
D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x
09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27
\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x2
1-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|
\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?
:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(
?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)
*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*)))?))(?:\.(?:(?:(?:(?:(?:(?:[\x20\x09]*(?
:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*
))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+
(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]
|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])
|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1))
)*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\
x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\
x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x0
9]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x0
9]+)*)))?[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:(?:(?:(?:[\x20\x09]*(?
:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*
))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+
(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]
|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])
|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1))
)*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\
x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\
x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x0
9]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x0
9]+)*)))?)|(?:(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:
[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(
?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)
*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1
F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0
B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\
x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\))
)+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\
x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]
+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?"(?:(?:(?:[\x20\x0
9]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x0
9]+)*))?(?:(?:[\x21\x23-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F
\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B
\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[
\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?"(?:(?:(?:
(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x
0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]
+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2
A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\
x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0
A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\
x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\
x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))
?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\
x0D\x0A)[\x20\x09]+)*)))?)))*))@(?:(?:(?:(?:(?:(?:[\x20\x09]*(?:\x
0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?
(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:
(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\
x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?
:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(
?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D
\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09
]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*
(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+
)*)))?(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-
/=?^_`{|}~]+)*)(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?
:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*
(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+
)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x
1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x
0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D
\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)
))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:
\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09
]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?)|(?:(?:(?:(?:(?:
[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)
[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(
?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\
x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E
]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\
x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20
\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D
\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(
?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D
\x0A)[\x20\x09]+)*)))?\[(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x0
9]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:[\x21-\x5A\x5E
-\x7E]|(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|(?:\\(?:[\x21-\x7E]|[\x
20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D))
))))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(
?:\x0D\x0A)[\x20\x09]+)*))?\](?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?
[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:
(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x
0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\
x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x0
0|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x2
0\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x2
0\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x
20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x
0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?)|(
?:(?:(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09
]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0
A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?
:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(
?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E
-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x
20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[
\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[
\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x2
0\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?[A-Za-z0-9!#$%&'*+\-/=?^_`{
|}~]+(?:(?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09
]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0
A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?
:[\x21-\x27\x2A-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(
?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E
-\x1F\x7F]|\x0A|\x0D)))|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x
20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[
\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[
\x20\x09]+)*))?|(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x2
0\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*)))?)(?:\.(?:(?:(?:(?:(?:[\x20\
x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\
x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x2
0\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5
D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x2
0\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))
|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+
(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))
?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[
\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[
\x20\x09]+)*)))?[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:(?:(?:(?:[\x20\
x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\
x09]+)*))?(\((?:(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x2
0\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?(?:(?:[\x21-\x27\x2A-\x5B\x5
D-\x7E]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x2
0\x09])|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))
|(?-1)))*(?:(?:[\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+
(?:(?:\x0D\x0A)[\x20\x09]+)*))?\)))+(?:(?:[\x20\x09]*(?:\x0D\x0A))
?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[\x20\x09]+)*))?|(?:(?:[
\x20\x09]*(?:\x0D\x0A))?[\x20\x09]+|(?:[\x20\x09]+(?:(?:\x0D\x0A)[
\x20\x09]+)*)))?))*))



my $CR = qq{\\x0D};
my $LF = qq{\\x0A};
my $CRLF = qq{(?:\\x0D\\x0A)};
my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};

my $obs_NO_WS_CTL = qq{[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]};
my $obs_ctext = $obs_NO_WS_CTL;
my $obs_qtext = $obs_NO_WS_CTL;
my $obs_qp = qq{(?:\\\\(?:\\x00|$obs_NO_WS_CTL|$LF|$CR))};
my $obs_FWS = qq{(?:$WSP+(?:$CRLF$WSP+)*)};

my $FWS = qq{(?:(?:$WSP*$CRLF)?$WSP+|$obs_FWS)};
my $ctext = qq{(?:[\\x21-\\x27\\x2A-\\x5B\\x5D-\\x7E]|$obs_ctext)};
my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP)|$obs_qp)};
my $ccontent = qq{(?:$ctext|$quoted_pair|(?-1))};
my $comment = qq{(\\((?:$FWS?$ccontent)*$FWS?\\))};
my $CFWS = qq{(?:(?:$FWS?$comment)+$FWS?|$FWS)};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
my $atom = qq{(?:$CFWS?$atext+$CFWS?)};
my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
my $dot_atom = qq{(?:$CFWS?$dot_atom_text$CFWS?)};

my $qtext = qq{(?:[\\x21\\x23-\\x5B\\x5D-\\x7E]|$obs_qtext)};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{(?:$CFWS?"(?:$FWS?$qcontent)*$FWS?"$CFWS?)};

my $obs_dtext = qq{(?:$obs_NO_WS_CTL|$quoted_pair)};
my $dtext = qq{(?:[\\x21-\\x5A\\x5E-\\x7E]|$obs_dtext)};
my $domain_literal = qq{(?:$CFWS?\\[(?:$FWS?$dtext)*$FWS?\\]$CFWS?)};

my $word = qq{(?:$atom|$quoted_string)};
my $obs_local_part = qq{(?:$word(?:\\.$word)*)};
my $obs_domain = qq{(?:$atom(?:\\.$atom)*)};
my $local_part = qq{(?:$dot_atom|$quoted_string|$obs_local_part)};
my $domain = qq{(?:$dot_atom|$domain_literal|$obs_domain)};
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;


 $mail_regex 使$email

# $email が正しいメールアドレス(addr_spec)か判定する

if ($email =~ /\A$mail_regex\z/o) {
  print "正しいメールアドレスです\n";
}


Email::Valid  Mail::CheckUser 使 調 使





RFC (CRLF)

# Foo.Bar@example.com
my $email = "(Foo Bar (FirstName: Foo) (LastName: Bar))\x0D\x0A" .
  "\x09(FirstName) Foo . (LastName) Bar\x0D\x0A" .
  "\x09\x09\@ example\x0D\x0A\x09\x09\x09(TLD) .com";

(Foo Bar (FirstName: Foo) (LastName: Bar))
        (FirstName) Foo . (LastName) Bar
                @ example
                        (TLD) .com


CFWS(comments and/or FWS)FWS(Folding white space) CFWSFWS 989

(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+)*)|(?:"(?:(?:[\x21\x23-\x5B\x5D-\x7E]|[\x01-\x08\x0B\x0C
\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01
-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D))))*")|(?:(?:(?:[A-Za-z0-9!#
$%&'*+\-/=?^_`{|}~]+)|(?:"(?:(?:[\x21\x23-\x5B\x5D-\x7E]|[\x01-\x0
8\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\
x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D))))*"))(?:\.(?:(?:[
A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)|(?:"(?:(?:[\x21\x23-\x5B\x5D-\x7E
]|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F])|(?:\\(?:[\x21-\x7E]|[\x20\x09]
)|(?:\\(?:\x00|[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D))))*")))
*))@(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\
-/=?^_`{|}~]+)*)|(?:\[(?:[\x21-\x5A\x5E-\x7E]|(?:[\x01-\x08\x0B\x0
C\x0E-\x1F\x7F]|(?:\\(?:[\x21-\x7E]|[\x20\x09])|(?:\\(?:\x00|[\x01
-\x08\x0B\x0C\x0E-\x1F\x7F]|\x0A|\x0D)))))*\])|(?:(?:[A-Za-z0-9!#$
%&'*+\-/=?^_`{|}~]+)(?:\.(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+))*))


perl 5.10 使 perl 5.8 

my $CR = qq{\\x0D};
my $LF = qq{\\x0A};
my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};

my $obs_NO_WS_CTL = qq{[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]};
my $obs_qtext = $obs_NO_WS_CTL;
my $obs_qp = qq{(?:\\\\(?:\\x00|$obs_NO_WS_CTL|$LF|$CR))};

my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP)|$obs_qp)};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
my $atom = qq{(?:$atext+)};
my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
my $dot_atom = $dot_atom_text;

my $qtext = qq{(?:[\\x21\\x23-\\x5B\\x5D-\\x7E]|$obs_qtext)};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{(?:"$qcontent*")};

my $obs_dtext = qq{(?:$obs_NO_WS_CTL|$quoted_pair)};
my $dtext = qq{(?:[\\x21-\\x5A\\x5E-\\x7E]|$obs_dtext)};
my $domain_literal = qq{(?:\\[$dtext*\\])};

my $word = qq{(?:$atom|$quoted_string)};
my $obs_local_part = qq{(?:$word(?:\\.$word)*)};
my $obs_domain = qq{(?:$atom(?:\\.$atom)*)};
my $local_part = qq{(?:$dot_atom|$quoted_string|$obs_local_part)};
my $domain = qq{(?:$dot_atom|$domain_literal|$obs_domain)};
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;






 Carol BS(退) Alice 

# "Carol<BS><BS><BS><BS><BS>Alice"@example.com
my $email = qq{"Carol\x08\x08\x08\x08\x08Alice"\@example.com};

"Alice"@example.com


NUL()CR()LF()ESC()CRLF obs-NO-WS-CTLobs-qtextobs-qp 609

(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+)*)|(?:"(?:[\x21\x23-\x5B\x5D-\x7E]|(?:\\(?:[\x21-\x7E]|[
\x20\x09])))*")|(?:(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)|(?:"(?:
[\x21\x23-\x5B\x5D-\x7E]|(?:\\(?:[\x21-\x7E]|[\x20\x09])))*"))(?:\
.(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)|(?:"(?:[\x21\x23-\x5B\x5D
-\x7E]|(?:\\(?:[\x21-\x7E]|[\x20\x09])))*")))*))@(?:(?:[A-Za-z0-9!
#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)*)|(?:\
[(?:[\x21-\x5A\x5E-\x7E]|(?:\\(?:[\x21-\x7E]|[\x20\x09])))*\])|(?:
(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)(?:\.(?:[A-Za-z0-9!#$%&'*+\-/=
?^_`{|}~]+))*))




my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};

my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP))};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
my $atom = qq{(?:$atext+)};
my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
my $dot_atom = $dot_atom_text;

my $qtext = qq{[\\x21\\x23-\\x5B\\x5D-\\x7E]};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{(?:"$qcontent*")};

my $obs_dtext = $quoted_pair;
my $dtext = qq{(?:[\\x21-\\x5A\\x5E-\\x7E]|$obs_dtext)};
my $domain_literal = qq{(?:\\[$dtext*\\])};

my $word = qq{(?:$atom|$quoted_string)};
my $obs_local_part = qq{(?:$word(?:\\.$word)*)};
my $obs_domain = qq{(?:$atom(?:\\.$atom)*)};
my $local_part = qq{(?:$dot_atom|$quoted_string|$obs_local_part)};
my $domain = qq{(?:$dot_atom|$domain_literal|$obs_domain)};
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;




IP





# foo@[192.0.2.123]
my $email = q{foo@[192.0.2.123]};

foo@[192.0.2.123]


 domain-literal  domain-literal  RFC 5321(  )  address-literal  address-literal IPv4IPv6 使  domain-literal  domain-literal  542

(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+)*)|(?:"(?:[\x21\x23-\x5B\x5D-\x7E]|(?:\\(?:[\x21-\x7E]|[
\x20\x09])))*")|(?:(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)|(?:"(?:
[\x21\x23-\x5B\x5D-\x7E]|(?:\\(?:[\x21-\x7E]|[\x20\x09])))*"))(?:\
.(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)|(?:"(?:[\x21\x23-\x5B\x5D
-\x7E]|(?:\\(?:[\x21-\x7E]|[\x20\x09])))*")))*))@(?:(?:[A-Za-z0-9!
#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)*)|(?:(
?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+)(?:\.(?:[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+))*))




my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};

my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP))};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
my $atom = qq{(?:$atext+)};
my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
my $dot_atom = $dot_atom_text;

my $qtext = qq{[\\x21\\x23-\\x5B\\x5D-\\x7E]};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{(?:"$qcontent*")};

my $word = qq{(?:$atom|$quoted_string)};
my $obs_local_part = qq{(?:$word(?:\\.$word)*)};
my $obs_domain = qq{(?:$atom(?:\\.$atom)*)};
my $local_part = qq{(?:$dot_atom|$quoted_string|$obs_local_part)};
my $domain = qq{(?:$dot_atom|$obs_domain)};
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;






IP RFC 822(  )  RFC 2822(  )  obsolete   $obs_

IP $obs_domain  $obs_local_part   $obs_domain  $dot_atom  $domain  $dot_atom  $obs_domain  $obs_domain  $obs_local_part

# "foo"."bar"@example.com
my $email = q{"foo"."bar"@example.com};

"foo"."bar"@example.com


 local-part(quoted-string) (.)使  local-part (quoted-string)使  obs-domain  obs-local-part  224 

(?:(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-9!#$%&'*+\-/=?
^_`{|}~]+)*)|(?:"(?:[\x21\x23-\x5B\x5D-\x7E]|(?:\\(?:[\x21-\x7E]|[
\x20\x09])))*"))@(?:[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]+(?:\.[A-Za-z0-
9!#$%&'*+\-/=?^_`{|}~]+)*)




my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};

my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP))};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
my $dot_atom = $dot_atom_text;

my $qtext = qq{[\\x21\\x23-\\x5B\\x5D-\\x7E]};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{(?:"$qcontent*")};

my $local_part = qq{(?:$dot_atom|$quoted_string)};
my $domain = $dot_atom;
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;








my $VCHAR = qq{[\\x21-\\x7E]};
my $WSP = qq{[\\x20\\x09]};
my $quoted_pair = qq{(?:\\\\(?:$VCHAR|$WSP))};
  ↓
my $quoted_pair = qq{(?:\\\\[\\x09\\x20-\\x7E])};


1

my $quoted_pair = qq{(?:\\\\[\\x09\\x20-\\x7E])};
  ↓
my $quoted_pair = qq{(?:\\\\[\\x09 -~])};

my $atext = qq{[A-Za-z0-9!#\$%&'*+\\-/=?^_`{|}~]};
  ↓
my $atext = qq{[-!#-'*+/-9=?A-Z^-~]};

my $qtext = qq{[\\x21\\x23-\\x5B\\x5D-\\x7E]};
  ↓
my $qtext = qq{[!#-\\[\\]-~]};


16 ASCII使 (-)

my $quoted_pair = qq{(?:\\\\[\\x09 -~])};
  ↓
my $quoted_pair = qq{\\\\[\\x09 -~]};

my $dot_atom_text = qq{(?:$atext+(?:\\.$atext+)*)};
  ↓
my $dot_atom_text = qq{$atext+(?:\\.$atext+)*};

my $quoted_string = qq{(?:"$qcontent*")};
  ↓
my $quoted_string = qq{"$qcontent*"};


((?:pattern)) RFC (*+) $word = 'word';  $words = qq{$word+};   wordddd...   $word = '(?:word)';



my $quoted_pair = qq{\\\\[\\x09 -~]};

my $atext = qq{[-!#-'*+/-9=?A-Z^-~]};
my $dot_atom_text = qq{$atext+(?:\\.$atext+)*};
my $dot_atom = $dot_atom_text;

my $qtext = qq{[!#-\\[\\]-~]};
my $qcontent = qq{(?:$qtext|$quoted_pair)};
my $quoted_string = qq{"$qcontent*"};

my $local_part = qq{(?:$dot_atom|$quoted_string)};
my $domain = $dot_atom;
my $addr_spec = qq{$local_part\@$domain};
my $mail_regex = $addr_spec;


134

(?:[-!#-'*+/-9=?A-Z^-~]+(?:\.[-!#-'*+/-9=?A-Z^-~]+)*|"(?:[!#-\[\]-
~]|\\[\x09 -~])*")@[-!#-'*+/-9=?A-Z^-~]+(?:\.[-!#-'*+/-9=?A-Z^-~]+
)*


使
my $mail_regex =
q{(?:[-!#-'*+/-9=?A-Z^-~]+(?:\.[-!#-'*+/-9=?A-Z^-~]+)*|"(?:[!#-\[\]-} .
q{~]|\\\\[\x09 -~])*")@[-!#-'*+/-9=?A-Z^-~]+(?:\.[-!#-'*+/-9=?A-Z^-~]+} .
q{)*};
トップへ

参考文献

トップへ
戻る
うずら メール

Copyright (C) 2009-2019 OHZAKI Hiroki. All rights reserved.