Greetings, lazy engineer!

Fix your damn email entry form.

By now, you're wondering what this is about.

It's probably because you suck at understanding how email addresses work.

  1. Email has existed on this planet since 1971
  2. It was formalized September of 1980
  3. The specification was last updated October, 2008
  4. Gmail, when first created in 2004, offered users "Plus Addressing" meaning that anything past the + is ignored by Google.
  5. The local-part of an email can contain A to Z,0 to 9, and !#$%&*+/=?^`{|}~
  6. The local-part of an email can contain anything on the ASCII chart between Space to ~ (except for ") if you put it in "Quotes".
  7. And you've been gleefully/willfully ignorant of all of this.

But you're not anymore

So, fix your damn email entry form.

Questions and Answers

What if someone enters in an invalid email address?
You're kidding right? Look, I get email at least once a week from some confused 80 year old in Connecticut who is positive that the email address I've had for two decades is the one she signed up for last week. Your craptastic filter didn't fix that problem, did it? I guarantee you she entered in a "correct" email. You honestly think that limiting folks to /a-z0-9\./i is really going to help that?
How will we know if the email is valid or not?
Oh, I dunno. How about sending a "confirmation" email and see if they click the link?
But, we had a problem where the email address broke our database!
Good God!? Really?? That makes me very concerned. Please shut down your service until you can have a grown up peer review your code and strip out the backdoors hackers have installed by now.
Our enterprise, web scale vendor doesn't allow for random emails.
They are idiots who are denying you customers. You also got scammed. Please consider hiring a professional software developer next time.
But, I still want to validate email addresses...
Yeah, that's not a question, however this post has a good overview for how to do it using regular expressions. Another site reports a regex filter that is 99.99% valid, so you could try that. Betcha it's more complex than the one you're using. In fact, here's another site you can use to validate email address patterns to check whatever crap library you are using.
We want the user's real email, not some weird throw away!
Yeah, genius, ever think that maybe foo@example.net is the throw away because every spammer in the world sends to that, and foo+legit@example.net is the REAL email address? No, probably not. Welcome to the 21st Century! Please wipe your shoes.
So, what sort of filter should I use?
Put simply? None. Don't use one. Limit to 254 characters and accept whatever the user tosses in there. Maybe, maybe, limit to characters between chr(31) and chr(126), otherwise people will hate you.
People are giving you their email because they trust you just enough to want information. It's a gift from the user to you. Don't piss on the gift you dweeb.