There are more forms of a valid email address on the Internet than you probably understand. I would suggest using other code to analyze them, for example email.utils.parseaddr .
For example, a valid address is:
"Rocky J. Squirrel" <rocky.squirrel@gmail.com>
Here is the name Rocky J. Squirrel, not "Rocky J. Squirrel".
( < > ):
rocky.squirrel@gmail.com (Rocky J. Squirrel)
parens "", . ( Python email.utils.parseaddr.)
( ):
>>> import email.utils
>>> email.utils.parseaddr("John Smith <jsmith@gmail.com>")
('John Smith', 'jsmith@gmail.com')