Считайте RFC 2822 для полного синтаксиса адреса электронной почты. Если вы работаете через BNF, вы увидите, что "@,@"@foo.bar
- это прекрасно, если не обычно. Правило, которое вы запрашиваете, может быть найдено в разделе 3.2.4:
atext = ALPHA / DIGIT / ; Any character except controls,
"!" / "#" / ; SP, and specials.
"$" / "%" / ; Used for atoms
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
atom = [CFWS] 1*atext [CFWS]
dot-atom = [CFWS] dot-atom-text [CFWS]
dot-atom-text = 1*atext *("." 1*atext)
и раздел 3.4.1:
addr-spec = local-part "@" domain
local-part = dot-atom / quoted-string / obs-local-part
domain = dot-atom / domain-literal / obs-domain
Если вы игнорируете все, кроме dot-atom
в правилах local-part
и domain
, вы будете сопоставлять обычные адреса. Возможно, ваш элемент управления asp.net не принимает все действительные адреса RFC2822, поэтому вам следует проверить эту документацию.
Вы можете сделать что-то похожее на трюк "% ", чтобы преобразовать действительный (или нет) адрес электронной почты в аргумент имени пользователя, который может принять ваш элемент управления.
( Освоение регулярных выражений от О'Рейли имел обыкновение иметь огромное количество одностраничных регулярных выражений (в основном правильных) для почтовых адресов, но оно пропало в 3-м изд.)