Это зависит от того, сколько ложных срабатываний и ложных отрицаний вы хотите. Адреса электронной почты, как правило, состоят из букв, цифр и определенных символов. Однако, хотя, вероятно, крайне редко можно увидеть символы из этого набора на реальном адресе электронной почты, стандарт , безусловно, позволяет это . Поэтому вам действительно нужно решить, сколько реальных совпадений вы хотите и сколько совпадений вы хотите, которые соответствуют вашему регулярному выражению, но не являются адресами электронной почты.
Вот один ответ, исключающий множество допустимых случаев, а также, вероятно, слишком много:
[A-Za-z0-9!#$%&*+-=?^_~]{1,64}@[A-Za-z0-9-.]{1,255}\.[A-Z]{2,6}