Как проверить адрес электронной почты с двумя точками в нем (Python)

#python #regex #email-validation

#python #регулярное выражение #электронная почта-проверка

Вопрос:

Ниже приведен фрагмент кода, в котором при вводе адреса электронной почты, например email@gmail.com , он скажет, что это действительно так.

Однако, если я введу адрес электронной почты, такой как email@students.school.edu , он скажет, что он недействителен. Я попробовал это с моим собственным школьным адресом электронной почты, в котором есть две точки, и он сказал, что он недействителен.

Есть ли способ проверить с помощью регулярного выражения обычный адрес электронной почты с одной точкой И адрес электронной почты с двумя точками в нем, как показано ниже?

 import re
email = input ("Type in an email address: ")
if re.match("A(?P<name>[w-_] )@(?P<domain>[w-_] ).(?P<toplevel>[w] )Z",email,re.IGNORECASE):
    print("Email is valid")
else:
    print("Email is invalid")
 

Ответ №1:

Вы можете использовать стандарт регулярных выражений python для электронных писем:

 r"(^[a-zA-Z0-9_. -] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $)
 

Источник: https://emailregex.com /

Итак, в контексте вашего исходного фрагмента это будет:

 import re
email = input ("Type in an email address: ")

if re.match(r"(^[a-zA-Z0-9_. -] @[a-zA-Z0-9-] .[a-zA-Z0-9-.] $)", email):
    print("Email is valid")
else:
    print("Email is invalid")
 

Комментарии:

1. что вы имеете в виду под «стандартом регулярных выражений python для электронных писем»? Каков источник для этого?

2. ^^ Не подразумевается как вызов, просто искренне заинтересован в авторитетности этого утверждения

3. Конечно, я не думаю, что это «официальный» источник, ха-ха, только то, что я нашел, когда погуглил. Я обновил свой ответ ссылкой.

4. Обратите внимание, что это также будет соответствовать email@students.school...

5. Большое вам спасибо! Это было именно то, что я искал. 🙂

Ответ №2:

 import re
email = input ("Type in an email address: ")
if email!= "":
    mailValidation = bool(re.search("^[a-zA-Z0-9.] @[a-zA-Z] .[comrgin]", email))
    if mailValidation == True:
        print("Validate mail.")
    else:
        print("Please check mail.")
 

Ответ №3:

Вы можете попытаться интегрировать какое-то внешнее более сложное решение, например mailcheck.co или аналогичная услуга. Главное, что вы можете сделать гораздо больше, чем формальная проверка. Вы можете проверить, работает ли электронная почта или нет, фактическое имя пользователя, фотографию профиля и т. Д.