Question: There are a number of [email](https://stackoverflow.com/questions/156430/regexp-recognition-of-email-address-hard) regexp [questions](https://stackoverflow.com/questions/210945/what-would-be-a-globally-accepted-regular-expression-to-match-e-mail-addresses) popping [up](https://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses) here, and I'm honestly baffled why people are using these [insanely obtuse](https://stackoverflow.com/questions/156430/regexp-recognition-of-email-address-hard#156469) matching expressions rather than a very simple parser that splits the email up into the name and domain tokens, and then validates those against the valid characters allowed for name (there's no further check that can be done on this portion) and the valid characters for the domain (and I suppose you could add checking for all the world's TLDs, and then another level of second level domains for countries with such (ie, com.uk)).

The real problem is that the tlds and slds keep changing (contrary to popular belief), so you have to keep updating the regexp if you plan on doing all this high level checking whenever the root name servers send down a change.

Why not have a module that simply validates domains, which pulls from a database, or flat file, and optionally checks DNS for matching records?

I'm being serious here, why is everyone so keen on inventing the perfect regexp for this? It doesn't seem to be a suitable solution to the problem...

Convince me that it's not only possible to do in regexp (and satisfy everyone) but that it's a better solution than a custom parser/validator.

-Adam

Answer: 
Regexs that catch most (but not all) common error are relatively easy to setup and deploy. Takes longer to write a custom parser.
We're just looking for a fast way to see if the email address is valid so that we can warn the user they have made a mistake or prevent people from entering junk easily.
Going off to the mail server and fingering it is slow and unreliable.
The only real way to be sure is to get a confirmation email, but the problem is only to give a fast response to the user before the confirmation process takes place. That's why it's not so important to be strictly compliant.
Anyway, it's a challenge and it's fun.