Проверка адресов электронной почты с помощью фильтра: проблема hackerrnak - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу с помощью регулярных выражений решить эту проблему.

Я решил проблему в Hackerrank Проверка адресов электронной почты с помощью фильтра

Вот мое решение:

def fun(s):
    if s.count('@')==1 and s.count('.')==1:
        username, websites = s.split('@')
        website, extension = websites.split('.')
        if  not (len(username)>0 and len(website)>0 and website.isalnum() and len(extension)<=3):
            return False        
        for i in username:
            if  not (i.isalpha() or i.isdigit() or i in ['-','_']):
                return False         
        return True
    return False

Я считаю, что это можно сделать с помощью регулярных выражений.

Может кто-нибудь помочь мне в этом?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Следует отметить, что использование регулярного выражения для сопоставления универсальных почтовых адресов может быть очень сложным и не таким тривиальным, как может показаться.

Тем не менее, правила этой задачи значительно упрощают это:

  • Он должен иметь тип формата username@websitename.extension.
  • Имя пользователя может содержать только буквы, цифры, тире и подчеркивания.
  • Название сайта может содержать только буквы и цифры.
  • Максимальная длина расширения составляет 3.

Примером регулярного выражения будет ^[\w-]+@[a-zA-Z\d]+\..{,3}$

0 голосов
/ 02 апреля 2019

Правила кажутся немного странными (расширение может быть любым, если его длина максимум 3?). Тем не менее, '[\w\d-]+@[A-Za-z\d]\..{1,3}$' должно работать.

Примечание: вам нужен $ (который представляет конец строки), или вы сопоставите любой адрес электронной почты с расширением более 3 букв, что для целей я считаю, что этот вопрос неправильный.

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