Now you can ask questions directly to me on my new site ASPForums. Net Question Answer site, specially started to allow visitors of this site ask their doubts and queries. Just click the Ask Now button and ask your question now. Depending on your application it may be more likely to come across someone will get mad because you don't accept their unconventional email, rather than someone who causes problems by entering email addresses that don't really exist (which they can do anyways by entering a 100% valid RFC2822 email address but using an unregistered username or domain). This is a SIMPLE regex for catching 95% of the mistakes. чебурашка@ящик-с-апельсинами.рф (Cyrillic) It's clearly versatile and allows the all-important international characters, while still enforcing the basic [email protected] format. I ended up using this one, it works the best for my needs and mostly I just hijacked the user portion and used something else for the match after the @ sign because I needed my implementation to only allow users of a specific domain. Would you like to answer one of these unanswered questions instead? Note this is only the case when defining the regex as follows: You can implement something 20x as long that might cause problems for a few users and might not be valid in the future, or you can grab Immortal Firefly's version to make sure they at least put in the effort to make it look real. The one I'm using is Will people please stop complaining about false positives? If you reduce your answer to just the jacascript, and add a little blurb to go with it, I'll give you an upvote. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).I'm tired of being told my e-mail address of "foo [email protected]" is invalid. The following Java Script- and Perl-compatible regular expression is an implementation of the above definition. Combined with feature detection and the bare-bones validation from Squirtle's Answer, it frees you from the regular expression massacre and does not bork on old browsers. This is because according to the RFC that is a valid e-mail address (think intranets). A good example would be if you want a person's username to be an e-mail address. The best option is to ask the user to type their e-mail in twice and if you MUST use a regex checker, then tell the user that their e-mail address does not appear to be valid and ask if they are sure they typed it right. Browsers would get grilled, if they validate too narrow and produce false negatives. If the user types in 'sexy_chick_23', then this regex can be used to give them a heads up that an e-mail is expected. In short, however, the only way to be absolutely, positively sure that what the user entered is in fact an email is to actually send an email and see what happens. @kommrad Homer -- a "regex invalid" address is almost always valid, because whatever regex you use to validate an email address is almost certainly wrong and will exclude valid email addresses. üñîçøðé@üñîçøðé(Unicode characters in domain part) 10. With this in mind, you can simply check whether a string looks like a valid email address on the client and perform the strict check on the server. I realize there's a mentality in these answers of only doing very basic email validation, but why would you allow the @ symbol to be at the beginning of the string when all you have to do is change -1 to 0 to make sure there's something before it? and removing a redundant backslash and ditto plus at the end, I can't find anything wrong with it. You should not use regular expressions to validate an input string to check if it's an email. A simple 90% solution is better than 100% solution that does not work. It doesn't have to be impossible to debug at all.
Something like this: Bearing in mind that theoretically you can have two @ signs in an email address, and I haven't even included characters beyond latin1 in the domain names!
There's something you have to understand the second you decide to use a regular expression to validate emails: It's probably not a good idea. Java Script in frontend (not for backend use of cause) is not sufficient for validating for security reasons. Basic typos are: forget TLD or user-prefix (before @) or domain-part or mistype . I think the function is too complex to be ported and used in Java Script.
If you want to use really HUGE regexes and still be far from perfect, see the other answers. It will block spaces which are technically allowed by RFC, but they are so rare that I'm happy to do this. All these "complicated" answers produce problems: they either don't allow puny-code IDN or use a fixed set of TLDs or unnecessarily restrict the user to not use characters like [@çµ.ö in their email-prefix (before @) or domain name.
See the real thing here: shouldn't the email addresses be validated client side?
Surely it's a much faster form of validation client side, since we don't need to make multiple HTTP requests across a network to validate the data?
This can lower your bounce rate drastically for users that misspell common domain names such as gmail.com, hotmail.com, aol.com, aso.. But if the value is greater or equal to 0, then the validation should be treated as a success.