Проблема в том, как работают классы символов: класс символов, такой как [a-z0-9 ._] +, означает «один из них - с этим правилом, примененным один или несколько раз». По сути, в правилах класса символов нет ничего такого, что нельзя повторять символы.
Хитрость в том, что вы хотите разделить «слова» точками, и вы должны принять во внимание эту группировку.
Рассмотрим что-то вроде этого:
$rexMail = "/^[a-z0-9_]+(\.[a-z0-9_]+)*@{1}[a-z0-9-_]+\.{1}[a-z]{2,4}\.?[a-z]{0,2}$/i";
Это в основном говорит: «одно слово (состоящее из буквенно-цифровых или подчеркиваний), затем ДОПОЛНИТЕЛЬНО (ноль или более раз) точка, за которой следует другое слово». (И это можно повторять столько раз или несколько раз, сколько хотите)
Кстати, квантификатор {1} никогда не нужен, потому что по умолчанию, если вы не укажете квантификатор, механизм регулярных выражений ищет его ровно один раз.