Regex для email-адреса

Используйте /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/, чтобы проверить, что вся строка является корректным email-адресом. Каждый пример ниже проверен по этому шаблону, а открыть его в Regex Tester можно с уже загруженными образцами.

Обновлено

/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
Открыть в Regex Tester
ВводРезультат
user@example.com✓ Совпадение
first.last+news@mail.example.co.uk✓ Совпадение
x_y%z@sub.domain.io✓ Совпадение
plainaddress✗ Нет совпадения
@example.com✗ Нет совпадения
user@domain✗ Нет совпадения
user name@example.com✗ Нет совпадения
user@@example.com✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
^Начало строки
[A-Za-z0-9._%+-]+Локальная часть: один или несколько символов — букв, цифр, точек, подчёркиваний, знаков процента, плюса или дефиса
@Символ @ буквально
[A-Za-z0-9.-]+Доменное имя, включая поддомены
\.Точка буквально перед доменом верхнего уровня
[A-Za-z]{2,}Домен верхнего уровня: две или более букв (com, io, museum)
$Конец строки

Примеры кода

JavaScript

const re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', value))

PHP

preg_match('/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/', $value) === 1;

Примечания и ограничения

Это практичный шаблон, который используют большинство форм регистрации. Он принимает некоторые технически странные адреса (две точки подряд) и отклоняет редкие допустимые (локальные части в кавычках, домены-IP-адреса). Единственный реальный способ проверить email — отправить письмо со ссылкой для подтверждения. В HTML-формах <input type="email"> даёт встроенную проверку браузера бесплатно.

Часто задаваемые вопросы

Какое регулярное выражение для email-адреса?
/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ — совпадает со всей строкой. Что делает каждая часть, см. таблицу выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: user@example.com, first.last+news@mail.example.co.uk, x_y%z@sub.domain.io. Остальные не совпадают.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образец текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.