Это должно работать:
^[^@\r\n\s]+[^.@]@[^.@][^@\r\n\s]+\.(\w){2,}$
Я проверил его по этим недействительным адресам электронной почты:
@exampleexample@domaincom.com
example@domaincom
exampledomain.com
exampledomain@.com
exampledomain.@com
example.domain@.@com
e.x+a.1m.5e@em.a.i.l.c.o
some-user@internal-email.company.c
some-user@internal-ema@il.company.co
some-user@@internal-email.company.co
@test.com
test@asdaf
test@.com
test.@com.co
И эти действительные электронные письма:
example@domain.com
e.x+a.1m.5e@em.a.i.l.c.om
some-user@internal-email.company.co
редактировать
Похоже, что этот проверяет все адреса со страницы википедии, хотя, возможно, он также допускает некоторые недействительные электронные письма. Скобка разделит его на все до и после @:
^([^\r\n]+)@([^\r\n]+\.?\w{2,})$
niceandsimple@example.com
very.common@example.com
a.little.lengthy.but.fine@dept.example.com
disposable.style.email.with+symbol@example.com
other.email-with-dash@example.com
user@[IPv6:2001:db8:1ff::a0b:dbd0]
"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
postbox@com
admin@mailserver1
!#$%&'*+-/=?^_`{}|~@example.org
"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
" "@example.org
üñîçøðé@example.com
üñîçøðé@üñîçøðé.com