It seems the regex is way too restrictive. From RFC2822 the local portion of the email address (before the "@") has the following definition.
From
http://www.faqs.org/rfcs/rfc2822.html, see paras 3.4.1 and 3.2.4 -- below is from 3.2.4
atext = ALPHA / DIGIT / ; Any character except controls,
"!" / "#" / ; SP, and specials.
"$" / "%" / ; Used for atoms
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
dot-atom = [CFWS] dot-atom-text [CFWS]
dot-atom-text = 1*atext *("." 1*atext)