as you know, this is how we validate an email address:
(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]
)+|\
My policy about email validation is: forget about it. Unicode domains aside, a user can give you a syntactically valid fake address (e.g. test@mailinator.com ).
Instead of validating the email address with that huge (and possibly computationally expensive??) expression
1) send a confirmation link to the user, that way you will know if the email address exist
2) check against Mailinator & Co. domains