Учитывая, что невозможно проанализировать каждый действительный адрес электронной почты с помощью регулярного выражения, у вас есть два варианта:
Создайте регулярное выражение, которое соответствует как можно большему количеству действительных адресов электронной почты, и учитывайте тот факт, что некоторые действительные, но редко используемые формы адресов электронной почты могут быть упущены.
или
Создайте регулярное выражение, которое сопоставляет все, что «может быть» адресом электронной почты, а затем соответствует ложным срабатываниям
Я использую второй подход, чтобы отсеять явно неправильные адреса электронной почты при проверке адреса электронной почты при регистрации пользователя на веб-странице.
Получено из Ruby Cookbook, в котором есть очень хороший раздел о проверке адреса электронной почты:
valid = '[^ @]+'
/^#{valid}@#{valid}\.#{valid}/
По-видимому, существует регулярное выражение Perl в 6343 символа, написанное Полом Уорреном, которое очень хорошо работает и работает в Ruby, но даже это не является надежным (я думаю, что это также может иметь некоторые последствия для производительности).