Это e-mail-regex исключает действительные адреса?
Я попытался создать регулярное выражение, которое перехватывает все адреса, допустимые для RFC, но это нормально, если некоторые ложные срабатывания проходят (хотя, надеюсь, не так много). Это то, что я дошел до сих пор:
/^\b\S+@\S+\.[^\s@]{2,}\b$/
Существует ли какой-либо действительный RFC-адрес, который не соответствует этому выражению, или у вас есть предложения по его улучшению? Я не возражаю против ложных срабатываний, но я был бы рад, если бы вы мне тоже кое-что показали.
5 ответов
Адреса электронной почты могут содержать вложенные комментарии, что портит большинство подходов регулярных выражений. Это действительный адрес электронной почты:
test(Oh (noes, an @) "sign")@(Here comes the domain)domain.com(TLD is com!!)
Даже без комментариев локальная часть может содержать строки в кавычках, которые могут содержать пробелы. Лучший подход, который я нашел, это: искать @
, Это обязательно. Так что я бы использовал
/.+@.+/
Проверьте этот пост:
Использование регулярного выражения для проверки адреса электронной почты
Есть также этот:
http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
Ничего подобного регулярному выражению 6000+ символов!
"foo bar"@example.com
Локальная часть может содержать пробелы (они должны быть в кавычках, но они действительны).
name@[1.2.3.4]
не совпадает, но действует Хороший список действительных / недействительных почтовых адресов для тестирования можно найти здесь.
Попробуйте regexbuddy для проверки регулярных выражений. Еще один удобный сайт, которым я часто пользуюсь, это regexplib