FishHookЯ раньше всегда думал, что перед @ допускаются только буквы, цифры, знаки - и _. Но на этом сайте допускается (сообщает “Address is valid”) например, и такой адрес:
Есть попроще
http://emailregex.com, но похуже
100-1per_cent%+$me@somedomain.ru
А вот такой адрес
кириллица@mail.ruне допускается - пишет “Address is invalid”.
Адреса с пробелами типа
much.more unusual@example.comна этом сайте тоже не допускаются (invalid).
lev-stas
С учетом сказанного, вам подойдет такое регулярное выражение (тоже не универсальное, но на практике, я думаю, близко к 100%):
r'([a-zA-Z0-9.-%$+-]+@[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4})'
UPD. Добавил насчет пробелов