Я не проверял ваше регулярное выражение подробно, но если заглавные символы - единственная проблема, то просто добавьте модификатор i
после последнего разделителя регулярных выражений
$regex='`([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})`i';
этот модификатор делает регулярное выражениесовпадение без учета регистра.
ОК, тогда вам следует добавить хотя бы несколько якорей \b
к регулярному выражению, чтобы избежать частичных совпадений.
$regex='`\b([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,6})\b`i';
См. здесь здесь, в регулярном выражении
\b
соответствует при переходе от символа слова (A-Za-z0-9_
) к несловесному символу (все остальные) и наоборот.
Вы должныподумайте об изменении последнего квантификатора с {2,4}
на {2,6}
, есть редкие домены, длина которых превышает 4 символа.