Обновление регулярного выражения Devise для проверки электронной почты - PullRequest
1 голос
/ 31 марта 2020

Я сейчас использую Разработать регулярное выражение :

/\A[^@\s]+@[^@\s]+\z/

Что просто и сортировать. Но он не фильтрует электронную почту, как example@example..com.

Альтернативой этому является URI :: MailTo :: EMAIL_REGEXP :

/\A[a-zA-Z0-9.!\#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/

, который будет фильтровать действительный домены типа hans@über.com.

Я не очень хорошо разбираюсь в регулярных выражениях, , но есть ли что-то лучше или как я могу добавить проверку двойной точки в первой с помощью Devise.

1 Ответ

2 голосов
/ 01 апреля 2020

Вы можете реорганизовать свое регулярное выражение как

/\A[^@\s]+@[^@.\s]+(?:\.[^@.\s]+)*\z/ # If you want to allow name@domain
/\A[^@\s]+@[^@.\s]+(?:\.[^@.\s]+)+\z/ # If you want to require at least one dot after @

Здесь,

  • \A - начало строки
  • [^@\s]+ - класс отрицанных символов соответствует 1 или более символам, отличным от @ и пробелам
  • @ - @ char
  • [^@.\s]+ - 1 или более символам, отличным от @, . и пробел
  • (?:\.[^@.\s]+)* - 0 или более вхождений (или 1 или более, если + используется в конце)
    • \. - точка
    • [^@.\s]+ - 1 или более символов, отличных от @, . и пробелов
  • \z - конец строки.

См. regex # 1 demo и regex # 2 demo .

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