@kachurynets

Регулярное выражение для этого списка электронных адресов?

На википедии на этой статье статье есть список валидных и не валидных адресов.

Valid email addresses
  • simple@example.com
  • very.common@example.com
  • disposable.style.email.with+symbol@example.com
  • other.email-with-hyphen@example.com
  • fully-qualified-domain@example.com
  • user.name+tag+sorting@example.com (may go to user.name@example.com inbox depending on mail server)
  • x@example.com (one-letter local-part)
  • example-indeed@strange-example.com
  • admin@mailserver1 (local domain name with no TLD, although ICANN highly discourages dotless email addresses[10])
  • example@s.example (see the List of Internet top-level domains)
  • " "@example.org (space between the quotes)
  • "john..doe"@example.org (quoted double dot)
  • mailhost!username@example.org (bangified host route used for uucp mailers)
  • user%example.com@example.org (% escaped mail route to user@example.com via example.


Подскажите какое регулярное выражение подойдет для того чтобы валидировать этот список валидных и невалидных электронных адресов?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
emailregex.com
const expression = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

const emails = [
  `simple@example.com`,
  `very.common@example.com`,
  `disposable.style.email.with+symbol@example.com`,
  `other.email-with-hyphen@example.com`,
  `fully-qualified-domain@example.com`,
  `user.name+tag+sorting@example.com`,
  `x@example.com`,
  `example-indeed@strange-example.com`,
  `admin@mailserver1`,
  `example@s.example`,
  `" "@example.org`,
  `"john..doe"@example.org`,
  `mailhost!username@example.org`,
  `user%example.com@example.org`,
];

for (const email of emails) {
  console.log(email, expression.test(email));
}
/*
'simple@example.com' true
'very.common@example.com' true
'disposable.style.email.with+symbol@example.com' true
'other.email-with-hyphen@example.com' true
'fully-qualified-domain@example.com' true
'user.name+tag+sorting@example.com' true
'x@example.com' true
'example-indeed@strange-example.com' true
'admin@mailserver1' false
'example@s.example' true
'" "@example.org' true
'"john..doe"@example.org' true
'mailhost!username@example.org' true
'user%example.com@example.org' true
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
WblCHA
@WblCHA
Учитывая разнообразие эмайлов, можешь просто юзать это: /^.+@.+$/
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Не надо валидировать емайлы одной регуляркой. Это мало того, что неблагодарное занятие, так и довольно проблематично тестируется и отлаживается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы