/[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z-]{2,16}/
Во-первых, изучайте правила RegExp.
Во-вторых, кроме _ ещё и тире с точкой часто применяются. А современный домен может быть и с двумя, с тремя, и четырьмя уровнями поддоменов (и точек). Стандарт PunyCode для шифрования национальных доменов делает обязательным появление тире в доменных именах. И современные домены верхнего уровня стали расти в длину...