これは何でょう? の回答。
一発目で答えが出てしまいましたが、答えは E-mail address ですね。E-mail address の形式は RFC 5321 で定義されています。
RFC 5321 Simple Mail Transfer Protocol 4.1.2. Command Argument Syntax より
Domain = sub-domain *("." sub-domain)
sub-domain = Let-dig [Ldh-str]
Let-dig = ALPHA / DIGIT
Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
address-literal = "[" ( IPv4-address-literal /
IPv6-address-literal /
General-address-literal ) "]"
; See Section 4.1.3
Mailbox = Local-part "@" ( Domain / address-literal )
Local-part = Dot-string / Quoted-string
; MAY be case-sensitive
Dot-string = Atom *("." Atom)
Atom = 1*atext
Quoted-string = DQUOTE *QcontentSMTP DQUOTE
QcontentSMTP = qtextSMTP / quoted-pairSMTP
quoted-pairSMTP = %d92 %d32-126
; i.e., backslash followed by any ASCII
; graphic (including itself) or SPace
qtextSMTP = %d32-33 / %d35-91 / %d93-126
; i.e., within a quoted string, any
; ASCII graphic or space is permitted
; without blackslash-quoting except
; double-quote and the backslash itself.
RFC 5322 Internet Message Format 3.2.3. Atom より
atext = ALPHA / DIGIT / ; Printable US-ASCII
"!" / "#" / ; characters not including
"$" / "%" / ; specials. Used for atoms.
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
atom = [CFWS] 1*atext [CFWS]
RFC の定義自体が正規表現を意識して書かれているような気がするので、正規表現にしてしまえ!
ということで、下記を記述。
// Local-part
var atom = "[A-Za-z0-9!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\|}~]+";
var dotString = atom + "(?:\\." + atom + ")*";
var qtextSMTP = "[\\x20-\\x21\\x23-\\x5B\\x5D-\\x7E]";
var quotedPairSMTP = "\\\\[\\ox20-\\x7E]";
var quotedString = "\\\"(?:" + qtextSMTP + "|" + quotedPairSMTP + ")+\\\"";
var localPart = "(" + dotString + "|" + quotedString + ")";
// Domain
var letDig = "[A-Za-z0-9]";
var ldhStr = "[A-Za-z0-9\\-]*" + letDig + "+";
var subdomain = letDig + "(?:" + ldhStr + ")*";
var domain = "(" + subdomain + "(?:\\." + subdomain + ")*)";
var mailbox = localPart + "@" + domain;
で、出来上がったのが下記になります。
^([A-Za-z0-9!#\$%&'\*\+\-/=\?\^_`\{\|}~]+(?:\.[A-Za-z0-9!#\$%&'\*\+\-/=\?\^_`\{\|}~]+)*|\"(?:[\x20-\x21\x23-\x5B\x5D-\x7E]|\\[\ox20-\x7E])+\")@([A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9]+)*(?:\.[A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9]+)*)*)$
めんどくさいので address-literal には対応していませんが、RFC 5321 に準拠していない E-mail address を弾くのに使えるでしょう。
Bug があったらおせ~てください。