I find these large catch-all email regexps silly for two reasons:
1. They are hard to write, hard to understand, and hard to maintain.
2. Most importantly, they are difficult to understand for users. "You entered an invalid email". Now what? the user asks.
This is why e-mail validation should be done in steps. Here is some Rails pseudocode:
validates_format_of :email,
:with => /@/,
:message => "Needs to contain an @."
validates_format_of :email,
:with => /\.[^\.]+$/,
:message => "Has to end with .com, .org, .net, etc."
validates_format_of :email,
:with => /^.+@/,
:message => "Must have an address before the @"
validates_format_of :email,
:with => /^[^@]+@[^@]+$/,
:message => "Must be of the format 'something@something.xxx'"
Much easier to write, much easier to maintain, and much better error messages to the users.