Форум сайта python.su
-5
Вот примеры регулярных выражения для проверки мэйлов.
пример 1
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
пример 2
([a-zA-Z0-9]+[a-zA-Z0-9._-]*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9]+[a-zA-Z0-9_-]*)+)
пример 3
[A-Za-z0-9._-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}
Отредактировано AZJIO (Сен. 13, 2014 16:37:51)
Офлайн
0
AlenВ этом случае можно расширить список
Что скажет на admin@домен.рф или vasya+pupkin@email.com ? А ведь это совершенно корректные почтовые адреса.
az09 = list('abcdefghijklmnopqrstuvwxyz1234567890.-@')
AZJIOвот это уже интересно, спасибо за расширение кругозора
Вот примеры регулярных выражения для проверки мэйлов.
пример 1
+(?:\.+)*@(??:*)?\.)+(?:*)?
пример 2
(+*@+(\.+*)+)
пример 3
+@+\.{2,4}
Но пока я изучал эту тему, то сомнений у меня было всё больше, чтобы как бы не заблокировать возможные валидные варианты.
Отредактировано xsay23 (Сен. 13, 2014 16:42:20)
Офлайн
49
Парсинг email занятие неблагодарное. Да и вообще “баян”, можно в интернете найти регуляку в 1500 символов. Поэтому лучше использовать стандартные валидаторы в фреймворках, например в Django. На худой случай, можно проверять существование домена для отправки почты:
import dns.resolver def check_mx_domain(email): try: domain = email.split('@')[1] except IndexError: return False if not domain: return False try: answers = dns.resolver.query(domain, 'MX') for data in answers: if data.exchange: return True except (dns.resolver.NXDOMAIN, dns.resolver.Timeout, dns.exception.DNSException): return False return False
Отредактировано Alen (Сен. 13, 2014 16:42:30)
Офлайн
-5
xsay23
вот это уже интересноНо тут нет вывода ошибок ввода пользователю. А вообще я находил темы, где подробно был спор за каждую букву. Тут скорее всего лучше делать по максимально доступному, чем заблокировать кому то доступ.
Отредактировано AZJIO (Сен. 13, 2014 16:51:39)
Офлайн
0
AZJIOВывод ошибок задача второго плана.
xsay23
Офлайн
-5
xsay23
Глядя на второй пример, показыват, что первый символ не должен быть точкой, тире, подчёркиванием (.-_). А вообще на сколько важно проверят валидность мэйла так тщательно? Ну в итоге какие то всё равно останутся доступны, а какие-то заблокирует. Может быть просто некоторые сто-процентные обязаловки проверить, а остальное допустить.
Отредактировано AZJIO (Сен. 13, 2014 17:00:43)
Офлайн
33
AZJIO
пхп вында апаш, не более.
Офлайн
49
xsay23
Цель такова:
в итоге получить правильное мыло
а ошибки можно вывести и не церемонясь
просто print('Ошибка')
в любом случае при повторном наборе будут внимательней
Офлайн
0
Alenсогласен, все это заменит компактные регулярные выражения
Ну тогда не имеет значение, какие Вы будете делать проверки, всё равно код сразу выкидывать.
Офлайн
49
xsay23
согласен, все это заменит компактные регулярные выражения
Офлайн