Проблема с использованием регулярного выражения для проверки адресов электронной почты с двойным '@' - PullRequest
1 голос
/ 03 февраля 2011

Для проверки адресов электронной почты я использую следующее регулярное выражение из www.regular-expressions.info :

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Проблема с использованием приведенного выше регулярного выражения в том, что я могу успешнопроверьте также адреса электронной почты с двойным '@', например:

name@surname@gmail.com # Note the double '@'
test@gmail@com.com

... , которые мне не нужны .Итак, как мне это настроить?


ОБНОВЛЕНИЕ

Я также обнаружил, что регулярное выражение не отказывается от адресов электронной почты, подобных этим:

name@gmail
test@surname@gmail

Ответы [ 2 ]

3 голосов
/ 03 февраля 2011

Ваше текущее регулярное выражение соответствует любой строке, в которой есть действительный адрес электронной почты. Введенная вами строка nome@surname@gmail.com имеет действительный адрес электронной почты surname@gmail.com.

Вам необходимо добавить начальную привязку (^) и конечную привязку ($) к регулярному выражению, чтобы регулярное выражение соответствовало complete строке, а не правильной подстроке об этом.

Попробуйте:

^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$
0 голосов
/ 03 февраля 2011

при условии, что вы «можете» использовать .net, вот регулярное выражение, которое я использую для проверки адресов электронной почты.

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...