Ugh, I wish programmers would quit trying to re-invent the email regex. While I'm usually a big fan of reinventing the wheel, this is a complex problem that has already been solved, and the solution can be found in just a minute or two on Google.
(Curiously, while most sites object, folks from Tirerack to VMware accept it but then occasionally URL-decode the + as a space, wreaking all manner of unforeseen havoc.)