Ah, you just happened to bump into my pet peeve:
+ is actually a legal character in the user part of an adress. It is even the example given for recipient_delimiter in postfix’s documentation.
There are probably a lot of other valid characters that the checker doesn’t accept, but since I use + for my own adresses, that is what I look for. In my opinion, it is usually better to err on the side of caution and never make a false negative. After all, if a form keeps responding with “invalid email” when the user has entered his address, that user is likely to go away and never come back.
The only low-maintenance regexp that will accomplish this is the short and simple ^.+@.+\…+$