Я знаю, что это было задано много раз раньше, но я не нашел ничего, что действительно соответствовало бы всем условиям, которые должен удовлетворять адрес электронной почты, чтобы считаться действительным.
Учитывая структуру адреса электронной почты, выполните следующие действия:
[email protected]
-
part1 = имя пользователя
-
part2 = домен
-
part3 и part4 = домен верхнего уровня
Это все условия, которые должны быть выполнены:
- Адрес электронной почты не должен принимать пробелы
- Адрес электронной почты не должен заканчиваться точкой или символом, отличным от буквы или числа
- Разрешен только один знак @
- Не может быть специального символа до или после знака at
- Не может быть специального символа до или после точки домена (точка после части 2 адреса электронной почты)
- Вы не можете вводить две или более точки в строке в имени пользователя
- В домене между точками @и точкой символы, которые находятся рядом с символом @и точкой, должны быть буквой или номером, в середине единственным допустимым символом является дефис.
- То же самое на шаге 7 идет для домена верхнего уровня (часть 3 и часть 4 или электронная почта).
Это регулярное выражение, которое я использую в настоящее время:
^([\w\.\-]+)@([\w\-]+)((\.(\w){2,9})+)$
Но это не соответствует условиям: 4,5,6,7 и 8
Я просто пытаюсь понять, как дополнять мое регулярное выражение и учиться в процессе.
ИЗМЕНИТЬ
В адрес электронной почты разрешены только специальные символы: точки, дефисы, символы подчеркивания и знак
Здесь список недействительных сообщений
mkyong - должен содержать символ "@"
mkyong123 @.com - домен не может начинаться с точки "."
mkyong() * @gmail.com - электронные письма разрешают только символ, цифру, подчеркивание и тире
mkyong @% *. com - электронные письма tld допускают только символ и цифру
mkyong..2002 @gmail.com - двойные точки "." не разрешают
mkyong. @gmail.com - последний символ электронной почты не может заканчиваться точкой "."
mkyong @mkyong @gmail.com - двойной "@" не разрешает
[email protected] -emails tld, который имеет два символа, не может содержать цифру
Действительно: