Технологии
Regex-шаблон для email, телефона и даты

Готовый regex-шаблон для email, телефона и даты вы берёте как рабочую запись с явными границами. Полный RFC 5322 одной строкой в форме задачу не закрывает: слишком много адресов, которые вы в продукте не хотите принимать. Для почты держите латиницу, цифры, точку и плюс в локальной части плюс домен с точкой. Для телефона заранее решите: плюс, скобки, пробелы, ведущая 8 или +7. Для даты отделите вид дд.мм.гггг от ISO гггг-мм-дд. Прогоните пары «должно найтись» и «не должно» в проверке regex на Тулси. Обработка идёт в браузере на вашем устройстве. Ниже: шаблоны, ложные совпадения и соседние утилиты вроде JSON formatter. Частые вопросы в конце.
Зачем копировать готовый шаблон в форму
Форма, лог и выгрузка CSV требуют один и тот же тип строки: почта, номер, календарный день. Писать выражение с нуля каждый раз дорого по времени. Вы копируете проверенную запись, подставляете свои примеры и смотрите, что зацепилось.
Сложность не в синтаксисе \d и @. Сложность в границах: что вы считаете допустимым адресом, российским номером, датой без 31 февраля. Готовый шаблон задаёт эти границы явно. Вы меняете их сознательно, а не «на глаз» после первого зелёного совпадения.
Запрос «regex email» обычно значит: дайте строку, которую можно вставить. Соседний кластер «регулярные выражения» часто ведёт к первому знакомству с тестером. Если вы ещё не открывали поля шаблона и флагов, начните с regex для новичка. Эта страница про готовые записи и ложные срабатывания.
Универсальная «одна строка на все форматы мира» ломает продукт. Вы либо режете валидные адреса коллег, либо пропускаете мусор вроде a@b.c и обрывки из лога. Держите три отдельных шаблона: почта, телефон, дата.
Сверьте движок. На Тулси выражение работает как в JavaScript в браузере. Если шаблон пойдёт в Python или в SQL, сверьте классы символов и якоря там, где код пойдёт в прод.
Regex-шаблон для email
Практичная запись для латинского адреса без пробелов:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Якоря ^ и $ держат всю строку. Без них шаблон выхватит кусок из предложения и вы примете мусор за адрес. Локальная часть: буквы, цифры, точка, подчёркивание, процент, плюс, дефис. После @ домен с точками и зона из двух и более латинских букв.
Эта запись не описывает весь стандарт электронной почты. Комментарии в скобках, кавычки в локальной части, IP вместо домена, кириллические зоны без punycode сюда не входят. Для формы регистрации этого обычно хватает. Для разбора сырого лога вы можете ослабить якоря и искать вхождение внутри строки, но тогда готовьте список ложных совпадений.
Плюс в Gmail (имя+тест@gmail.com) эта запись принимает. Если бэкенд режет плюс, шаблон и сервер разъедутся: форма зелёная, письмо не уйдёт. Сверьте правило с тем, что делает ваш код после отправки.
Что шаблон ловит лишнего
Короткий домен x@y.zz проходит, если зона из двух букв. Для внутренней почты user@localhost запись с точкой в домене молчит: точки нет. Если вам нужен внутренний хост, добавьте отдельное правило, не раздувайте общий шаблон.
Две точки подряд в локальной части (и..мя@домен) часть движков примет, потому что класс символов точку не запрещает дважды. Если продукт этого не хочет, добавьте отрицательный просмотр или проверьте строку вторым проходом без regex.
Адрес с пробелом в начале или конце якоря отсекут. Если пользователь копирует почту из письма с переносом, сначала обрежьте пробелы в коде, потом применяйте шаблон. Иначе человек увидит «неверный email» на валидном адресе.
Что шаблон режет зря
Кириллический адрес в зоне .рф без punycode эта запись отвергнет. Если вы принимаете такие адреса, либо требуйте punycode (xn--), либо используйте отдельную проверку домена, не одну латинскую зону {2,}.
Длинная зона вроде .museum проходит. Очень новая зона из цифр не проходит: класс [a-zA-Z] цифр не содержит. Смотрите актуальный список зон вашего продукта, а не «все зоны интернета».
Кавычки вокруг локальной части стандарт допускает, формы почти не принимают. Оставьте отказ. Пользователь с таким адресом напишет в поддержку чаще, чем вам понадобится усложнять выражение.
Телефон: плюс, восьмёрка, скобки
Сначала зафиксируйте канон. Для РФ удобно хранить +7 и десять цифр: ^\+7\d{10}$. Форма может принимать 8 (999) 123-45-67, код перед записью в базу нормализует строку: убрать скобки, пробелы, дефисы, заменить ведущую 8 на +7.
Шаблон «как ввёл человек» шире:
^(\+7|8)[\s\-]?\(?\d{3}\)?[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}$
Он ловит пробел, дефис и скобки вокруг кода. Расширение ,123 и добавочный через доб. он не покрывает. Для колл-центра заведите отдельное поле, не пихайте добавочный в тот же захват.
Международный вид без привязки к РФ: плюс, код страны, дальше цифры. Жёсткая длина ломает номера разной длины. Мягкий вариант для черновика: ^\+\d{8,15}$ после удаления пробелов. Это не «все номера ITU», это фильтр очевидного мусора.
Российский номер в форме
Десять цифр после +7 или 8. Код оператора трёхзначный. Шаблон выше не проверяет, что код существует в справочнике. +70000000000 пройдёт по длине. Если нужна проверка оператора, сверяйте код списком после regex.
Номер 8800 для горячей линии часто пишут с восьмёрки. Если вы ждёте только мобильные, отсеките 800 отдельным правилом. Один общий шаблон «любые 11 цифр» смешает мобильный и федеральный 8-800.
Скопированный номер из мессенджера иногда несёт невидимый символ или плюс в виде другого знака. Если шаблон молчит на «правильной» строке, вставьте её в тестер и посмотрите длину: лишний пробел в конце якорь $ убивает совпадение.
Ложные совпадения в логах
Unix-время из 10 цифр и кусок 79001234567 внутри длинного идентификатора шаблон без границ может принять за телефон. В логе ставьте \b или якоря на всю строку поля, не ищите «просто 11 цифр» по всему файлу.
Дата 14.08.2026 содержит группы цифр. Шаблон телефона с опциональными разделителями иногда цепляет куски дат, если вы убрали требование +7 или 8 в начале. Держите префикс обязательным.
JSON с полем "phone": "+79001234567" удобно сначала разобрать как структуру в JSON formatter, потом копировать значение поля в тестер regex. Так вы не ловите кавычки и запятые вместе с номером.
Дата: день.месяц.год и ISO
Русский календарный вид:
^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4}$
День 01–31, месяц 01–12, год из четырёх цифр. 31.02.2026 эта запись примет: regex не знает календарь. Проверку «этот день есть в этом месяце» делайте в коде после совпадения.
ISO:
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Год-месяц-день, дефисы. Путаница с американским мм/дд/гггг здесь не возникает, если вы запретили слэш. Если в тексте смешаны точки и дефисы, два шаблона запускайте по очереди, не склеивайте через | без нужды: отладка сложнее.
Время рядом с датой (2026-08-14T12:00:00Z) ISO-шаблон на всю строку отвергнет. Для меток из API либо режьте дату слева до T, либо используйте отдельный разбор, не один «универсальный» захват.
Что проверить глазами на дате
Ведущий ноль. Шаблон выше требует 08, не 8. Если пользователи пишут 8.8.2026, либо нормализуйте ввод, либо ослабьте группы: (0?[1-9]|[12]\d|3[01]). Ослабленная запись принимает 32 меньше, но 8.13.2026 всё ещё отсечёт месяц 13.
Двузначный год .26. Для архивов это отдельный ад: 1926 это или 2026. Не смешивайте с четырёхзначным шаблоном. Если в файле оба вида, разметьте колонки руками.
Граница слова. В тексте заказ 14.08.2026г буква г сразу после года ломает $. Решите, допускаете ли вы суффикс, и вынесите его в необязательную группу.
Ложные даты из других чисел
Версия 1.2.3456 похожа на дату, если вы ослабили ведущие нули и верх дня. IP 192.168.0.1 из четырёх чисел точками: трёхчастный шаблон его не возьмёт целиком, но кусок 168.0.1 без якорей может всплыть. Якоря на поле спасают.
Сумма 14.08 без года для денег с копейками. Добавьте обязательный год из четырёх цифр, если ловите даты в смешанном тексте.
Как прогнать шаблон на своих строках
Откройте проверку regex. Вставьте выражение. Вставьте текст: несколько строк, которые должны совпасть, и несколько, которые не должны. Включите флаг g, если ищете все вхождения в абзаце. Для проверки поля формы держите якоря и одну строку на тест.
Соберите мини-набор до правок кода. Для email: рабочий адрес коллеги, адрес с плюсом, строка без @, строка с пробелом, кириллица в зоне. Для телефона: +7 слитно, 8 со скобками, девять цифр, номер из лога без префикса. Для даты: 14.08.2026, 31.02.2026, 2026-08-14, 8.8.26.
Смотрите длину совпадения, не только «нашлось / не нашлось». Жадный кусок может захватить две почты подряд через точку в домене. Тогда сузьте класс или запретите две @ в одном захвате.
Данные остаются на устройстве: вы вставляете кусок лога без отправки на сервер. Для продакшен-секретов этого мало. Вырежьте токены руками, оставьте структуру строки.
Если синтаксис выражения битый, тестер покажет ошибку компиляции. Частая причина: незакрытая скобка группы или лишний \. Исправьте запись, не меняйте тестовый текст, пока выражение не соберётся.
Соседние задачи рядом с шаблоном
Готовый regex закрывает вид строки. Соседние утилиты закрывают то, что выражение не должно делать.
JSON из API с полями email, phone, created_at сначала приведите к читаемому виду в JSON formatter, найдите лишнюю запятую, потом копируйте значения в тестер. Статья как найти ошибку в JSON закрывает скобки и хвост после последнего поля.
Набор dev-страниц Тулси собран в инструментах для разработчика: timestamp, Base64, регистр. Unix-время в колонке рядом с «датой» regex даты не заменит: число секунд разбирайте конвертером, не шаблоном дд.мм.
Первый шаг «что такое \d и зачем флаг i» лежит в regex для новичка. Сюда возвращайтесь, когда копируете готовую запись и ловите ложные совпадения на своих строках.
Частые вопросы
Какой regex для email взять в форму
Для латинского адреса без пробелов возьмите ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. Якоря держат всю строку поля. Полный стандарт почты эта запись не кодирует: кавычки, комментарии и кириллические зоны без punycode она режет. Прогоните свои адреса в проверке regex до вставки в код.
Как проверить email регулярным выражением на тексте
Вставьте шаблон и несколько строк: рабочий адрес, адрес без @, строка с пробелом, две почты в одном абзаце. С флагом g тестер покажет все вхождения. Без якорей выражение выхватит кусок из предложения; для поля формы якоря оставьте. Смотрите границы совпадения, не только факт подсветки.
Regex для телефона России с плюсом и восьмёркой
Канон в базе: ^\+7\d{10}$. Ввод в форме: ^(\+7|8)[\s\-]?\(?\d{3}\)?[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}$. Нормализуйте скобки и пробелы в коде до записи. Шаблон не проверяет, существует ли код оператора: +70000000000 пройдёт по длине.
Регулярное выражение для даты дд.мм.гггг
Запись ^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.\d{4}$ требует ведущие нули и год из четырёх цифр. 31.02.2026 совпадёт: календарь regex не считает. Проверку числа дней в месяце оставьте коду. Двузначный год смешивать с этой записью не стоит.
Почему шаблон email пропускает плюс вроде имя+тест
Класс [a-zA-Z0-9._%+-] плюс разрешает. Gmail такие адреса принимает как алиасы ящика. Если ваш бэкенд плюс режет, уберите + из класса или нормализуйте локальную часть до @. Сверьте форму и сервер на одном и том же примере.
Можно ли одним regex закрыть RFC 5322
Нет. Стандарт допускает конструкции, которые в HTML-форме никто не ждёт, а практичные шаблоны режут валидные по бумаге адреса. Для продукта выберите узкое правило и список исключений. Не копируйте «идеальную» простыню на полэкрана: её нельзя сопровождать и она всё равно расходится с тем, что принимает почтовый сервер.
Как не ловить дату внутри длинного числа или IP
Держите якоря на поле или границы \b. Требуйте ровно три компонента с точками и год из четырёх цифр. IP из четырёх чисел целиком трёхчастный шаблон не возьмёт, кусок без якорей может. Для логов размечайте колонку, не ищите дату по всему файлу одним \d+\.\d+\.\d+.
Regex email: проверить бесплатно на сайте
Откройте проверку regex на Тулси, вставьте шаблон и свои строки. Совпадения видны в браузере, текст на сервер не уходит. Для учебного примера этого хватает. Секреты из продакшена вырежьте до вставки.
Чем валидация email regex отличается от отправки письма
Шаблон говорит: строка похожа на адрес. Письмо доходит, только если ящик существует и сервер принял SMTP. Ложный «успех» формы после regex без подтверждения почты оставляет в базе опечатки. Для регистрации оставьте письмо со ссылкой, regex держите как фильтр мусора.
Что делать, если шаблон молчит на «правильном» номере
Посчитайте символы: пробел в конце, неразрывный пробел, другой плюс из буфера. Вставьте строку в тестер с якорями и без. Сверьте, ждёте ли вы 8 или только +7. Если скобки в шаблоне обязательны, а человек ввёл слитно, ослабьте группы скобок как в записи выше.
Готовые шаблоны экономят час на первом черновике и не заменяют календарь, справочник операторов и письмо подтверждения. Держите три записи отдельно, гоняйте ложные примеры, соседние поля из JSON разбирайте форматтером до вставки в тестер.
Проверьте шаблон на тексте
Вставьте готовое выражение и свои строки. Совпадения видны сразу, данные остаются на устройстве.


