хм странно не видеть этот ответ уже в ответах. Вот тот, который я построил.
Это не пуленепробиваемая версия, но она «простая» и проверяет почти все.
[\w+-]+(?:\.[\w+-]+)*@[\w+-]+(?:\.[\w+-]+)*(?:\.[a-zA-Z]{2,4})
Я думаю, что есть объяснение, поэтому вы можете изменить его, если хотите:
( e ) [\w+-]+
соответствует a-z, A-Z, _, +, - хотя бы один раз
( m ) (?:\.[\w+-]+)*
соответствует a-z, A-Z, _, +, - ноль или более раз, но начинать нужно с a. (точка)
@
= @
( i ) [\w+-]+
соответствует a-z, A-Z, _, +, - хотя бы один раз
( l ) (?:\.[\w+-]+)*
соответствует a-z, A-Z, _, +, - ноль или более раз, но начинать нужно с a. (точка)
( com ) (?:\.[a-zA-Z]{2,4})
соответствует a-z, A-Z от 2 до 4 раз, начиная с a. (Точка)
дает e(.m)@i(.l).com
, где (.m)
и (.l)
являются необязательными, но также могут повторяться несколько раз.
Я думаю, что это проверяет все действительные адреса электронной почты, но блокирует потенциально недействительные без использования слишком сложного регулярного выражения, которое в большинстве случаев не понадобится.
обратите внимание, что это позволит +@-.com
, но это компромисс для простоты.