Why are so many web developers incapable of understanding email validation? Why do so few websites accept me putting a + in my address for the purposes of spam tracking? Nobody would stand for a URL parser that doesn't accept you putting in a %20 to represent a space, so why are we so careless with email?
Whenever somebody writes their own validator that doesn't match the RFC exactly, they are inventing their own standard, and in every case I've seen they're doing so out of ignorance or
brain-dead stupidity that will have to be updated as soon as ICANN introduce customised TLDs. That is, of course, if anyone's around to fix them. Hint: they won't. This attitude is why developing for the web is still such a painful process; nobody cares about mistakes until they're slighted by them, so the rest of us have to
work around them further discouraging any change.
All because people insist on writing a validator that nannies the user as much as possible while causing problems further down the line and making the web an awkward place for anyone who's even slightly technically-savvy,
living in Anguilla or with any other kind of
unusual address.
Anyone who thinks that they can cut down on user errors by requiring they enter a @ and a . somewhere in their address clearly has no clue how real users actually operate. The @ is the least of your worries - people generally know what an email address is and know it has a @ in it, so they remember it. What they actually do is make far, far more typos in the regular parts of your address that will never get caught by any regex! And the really clueless people who think an email address is a website will work out some way to mutilate whatever they typed to pass your validator. They will do it and don't be so naïve to think otherwise, or you'll get quite the surprise when you look through a database dump someday.
The sanest thing you can ever do with email validation, short of sending an email to that address as verification, is to ask the user to type the address in a second time. If you actually care that you're getting the right data, any look at a dataset will indicate the problem is not "how do we make Bob type in a syntactically-valid email address?" but "how do we stop Bob typing his address as bob@hotmali.com?".
But not even this will help people who just forgot their email address and enter any old crap. I was among the first subscribers to a national ISP which had 400k users in 2000, and even then I got far too many emails from other people putting their email address as "bob@btinternet.com". Even people buying stuff online! I abandoned that account not long after because of all the spam, although I'm sure it could be very useful for somebody far more crooked than I.
In short, there is nothing you can do. You will never win the battle against human stupidity. The best you can do is not to screw over people who are actually doing things right.
Validating imperfectly is worse than not validating at all.