Вы должны быть очень осторожны при проверке адресов электронной почты. Я не говорю, что вы не должны этого делать, но вы должны знать, что написать 100% точную проверку адреса электронной почты будет чрезвычайно сложно, и, имея не совсем совершенную проверку, вы все равно можете допустить недействительность адреса и (что еще хуже) мешают законным пользователям.
Есть много неясных дел, которые технически действительны (даже если они используются редко и рано или поздно могут сломать плохо написанный почтовый сервер где-нибудь в мире). Вам нужно решить, хотите ли вы разрешить адреса от этого меньшинства пользователей.
Возможно, у вас есть пользователь, который (достаточно глуп, чтобы получить) адрес электронной почты, содержащий знак @ в кавычках.
например "the-address-has-two-@-symbols"@example.com
Infact, вы можете иметь практически любой символ, который вы можете придумать в не доменной части адреса (если они указаны в кавычках), могут появляться даже пробелы: "Forename Surname"@example.com
В вашем примере: £££τεστtest@gma!"¬ilγμαιλ.ψψομcomd**%%$
на самом деле будет недействительным, поскольку доменные имена могут содержать только буквы (a-z), цифры, точки и дефисы .
Поэтому, если вы делаете совпадение без учета регистра и хотите проверить правильность доменных имен, вы сможете упростить выражение (взятое из вашего комментария) до
^\D+([-+.']\D+)*\S[^\@]+@[a-z0-9]+[a-z0-9\-\.]*$
Вы также можете продолжить проверку домена, но для ее правильного выполнения потребуется чтение RFC 2396 .