Here's the expression:
^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$
Here's the way it can be used in ASP.NET Regular Expression Validator:
<
asp:RegularExpressionValidator
runat
=
"server"
ID
=
"EmailAddress"
Display
=
"Dynamic"
ControlToValidate
=
"txtFirstName"
ErrorMessage
=
"Please enter a valid e-mail address"
ValidationExpression
=
"^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$"
ValidationGroup
=
"CreateUserForm"
>*</
asp:RegularExpressionValidator
>
Matches: name@domain.com | name@sub-domain.com.au | name@sub1.sub2.domain | name@organization.co.uk | name@domain.tv | name@domain.four | name@mailbox.com.us
Non-Matches: www.domain.com | name@.com | name@domain..com | name@anything@.com | name@com