Python регулярное выражение для сопоставления электронной почты с доменными именами - PullRequest
0 голосов
/ 14 апреля 2010

Я ищу "идеальные" регулярные выражения для проверки, принадлежит ли электронная почта доменному имени (включая поддомен), например:

www.domain.com : some1@domain.com
sub.domain.com : some1@sub.domain.com
domain2.com : some1@domain2.com

Ответы [ 2 ]

1 голос
/ 15 апреля 2010

Взято из Джанго:

email_re = re.compile(
    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
    r')@(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?$', re.IGNORECASE)  # domain
0 голосов
/ 22 декабря 2011

Вам не нужно регулярное выражение:

>>> def match_domain(domain, email):
...    return email.endswith(domain.lstrip('www.'))
...
>>> match_domain('www.domain.com', 'some1@domain.com')
True
>>> match_domain('www.domain.com', 'some1@www.domain.com')
True
>>> match_domain('sub.domain.com', 'some1@sub.domain.com')
True
>>> match_domain('sub.domain2.com', 'some1@sub.domain.com')
False
>>> match_domain('domain2.com', 'some1@domain.com')
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...