Сейчас появилось много длинных доменов первого уровня (включая национальные, которые начинаются с xn--):
https://ru.wikipedia.org/wiki/%D0%A1...B2%D0%BD%D1%8F
так что "?[a-z]{2,4}$" в конце
надо заменить на "?[a-z0-9-]{2,}$"
А в начале:
"/^([a-z0-9_\.-])+@"
я бы добавил как минимум ещё символ плюса:
"/^([a-z0-9_\.\+-])+@"
--
http://savepearlharbor.com/?p=188548
Хотя, по спецификации там ещё много символов разрешается на самом деле...