Проверка электронной почты с использованием регулярного выражения Python - PullRequest
0 голосов
/ 09 апреля 2020

У меня 9 шаблонов писем. Я ожидаю:

  • myname@domainemail.com
  • my. name@domainemail.com
  • my. name1@domainemail.com
  • my_name. 1@domainemail.com действительны электронные письма.

и

  • my-name@domainemail.com
  • my.name. 1@domainemail.com
  • имя домена. 1@domainemail.com
  • 1myname@domainemail.com
  • 1. myname@domainemail.com не являются действительными электронными письмами.

Затем я создал скрипт регулярного выражения, например:

regex = r"(^[a-zA-Z_]+[\.]?[a-z0-9]+)@([\w.]+\.[\w.]+)$"

Но, имя домена электронной почты. 1@domainemail.com все еще действует.

Как сделать правильное регулярное выражение шаблона, чтобы электронная почта стала недействительной, и все шаблоны электронной почты могли соответствовать моим ожиданиям?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Для данных примера вы можете либо сопоставить необязательную деталь с подчеркиванием, где точка, за которой следует ди git, разрешена до @

, либо вы сопоставите деталь с точкой и символом аз до @

 ^[a-zA-Z]+(?:(?:_[a-zA-Z0-9]+)+\.[A-Za-z0-9]+|\.[a-zA-Z][a-zA-Z0-9]*)?@(?:[a-zA-Z0-9]+\.)*[a-zA-Z0-9]{2,}$

Объяснение

  • ^ Начало строки
  • [a-zA-Z]+ Совпадение 1+ раз, как символ аз
  • (?: Группа без захвата
    • (?:_[a-zA-Z0-9]+)+ Повторите 1+ раз подчеркивание с последующим символом az или di git 0-9
    • \.[A-Za-z0-9]+ Match точка и 1+ символов az или di git 0-9
    • | или
    • \.[a-zA-Z][a-zA-Z0-9]* Совпадают с точкой и одним символом az и 0+ символами az или цифрами
  • )? Закрыть группу и сделать ее необязательной
  • @ Совпадение буквально
  • (?:[a-zA-Z0-9]+\.)* Повторить 0+ раз a-z0-9 с последующим по точке
  • [a-zA-Z0-9]{2,} Соответствует a-z0-9 2 или более раз
  • $ Конец строки

Regex demo

0 голосов
/ 09 апреля 2020

Используйте следующий шаблон регулярных выражений с флагами gmi:

^[a-z]+(?:(?:\.[a-z]+)+\d*|(?:_[a-z]+)+(?:\.\d+)?)?@(?!.*\.\.)[^\W_][a-z\d.]+[a-z\d]{2}$

https://regex101.com/r/xoVprE/4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...