Войти в Senler

Регулярные выражения

Регулярные выражения (или просто «регулярки») — это специальные шаблоны для поиска и проверки текста.

С их помощью можно определить, соответствует ли сообщение определённому правилу. Например:

  • содержит ли текст номер телефона;
  • указана ли дата в нужном формате;
  • состоит ли сообщение только из цифр;
  • написал ли пользователь одно из нескольких ключевых слов.

Регулярные выражения часто используются в ботах для проверки ответов пользователей и запуска разных сценариев в зависимости от введённых данных.

Шаблон бота с готовыми примерами регулярных выражений можно скопировать по ссылке:

https://senler.ru/cabinet/botshare/1230502_c0f5a5457766fc24ea3ec55dd738cf46

Из чего состоит регулярное выражение

Регулярное выражение может содержать:

Обычные символы

Обычные символы соответствуют самим себе.

Например, выражение:

кот

найдёт слово «кот» в тексте.

Метасимволы

Метасимволы — это специальные символы, которые выполняют определённые функции.

Например:

.

*

+

?

[]

Такие символы не ищут сами себя, а задают правила поиска.

Если необходимо найти именно символ . или ?, а не использовать его как специальный символ, перед ним ставится обратный слеш:

\.

\?

Это называется экранированием.

Начало и конец строки

Иногда важно проверить не отдельную часть сообщения, а весь текст целиком.

Для этого используются специальные символы:

СимволЗначение
^начало строки
$конец строки

Например:

^привет$

Совпадение произойдёт только в том случае, если пользователь отправил ровно слово «привет».

Подойдут:

  • привет

Не подойдут:

  • привет всем
  • ну привет
  • привет!

Группы

Круглые скобки позволяют объединять несколько частей выражения в одну группу.

Например:

(abc)

соответствует последовательности символов abc.

Выражение:

a(bc)

найдёт последовательность abc, где часть bc выделена в отдельную группу.

Группы особенно полезны вместе с операторами выбора и повторения.

Оператор «или»

Символ | позволяет указать несколько вариантов, любой из которых считается подходящим.

Например:

cat|dog

соответствует словам cat или dog.

Другой пример:

(red|blue)car

Подойдут:

  • redcar
  • bluecar

Не подойдёт:

  • greencar

Классы символов

Классы символов задаются в квадратных скобках и позволяют указать набор допустимых символов.

Перечисление символов

Например:

[abc]

означает: один символ, который может быть a, b или c.

Диапазоны

Часто удобнее указать диапазон символов.

ВыражениеЧто означает
[0-9]любая цифра
[a-z]любая строчная латинская буква
[A-Z]любая заглавная латинская буква
[a-zA-Z]любая латинская буква
[а-яёА-ЯЁ]любая буква русского алфавита, включая Ё
[aeiou]любая из перечисленных букв
[0-9a-fA-F]любая шестнадцатеричная цифра

Например:

[0-9]

найдёт любую отдельную цифру:

  • 0
  • 5
  • 9

Исключение символов

Если поставить символ ^ в начале класса символов, будут выбраны все символы, кроме указанных.

Например:

[^0-9]

соответствует любому символу, который не является цифрой.

Подойдут:

  • а
  • %
  • пробел

Не подойдут:

  • 0
  • 5
  • 9

Специальные классы символов

Для часто используемых наборов символов существуют сокращённые обозначения.

ВыражениеЧто означает
\dлюбая цифра
\Dлюбой символ, кроме цифры
\wбуква или цифра
\Wлюбой символ, кроме букв и цифр
\sпробельный символ (пробел, перенос строки, табуляция)
\Sлюбой символ, кроме пробельного

Например:

\d

эквивалентно:

[0-9]

Квантификаторы

Квантификаторы позволяют указать, сколько раз должен повторяться символ, класс символов или группа.

Звёздочка *

Означает: ноль или более повторений.

a*

Подойдут:

  • пустая строка
  • a
  • aa
  • aaa

Плюс +

Означает: одно или более повторений.

b+

Подойдут:

  • b
  • bb
  • bbb

Не подойдёт пустая строка.

Вопросительный знак ?

Означает: символ может присутствовать один раз или отсутствовать совсем.

Например:

colou?r

Подойдут:

  • color
  • colour

Точное количество повторений

Для задания конкретного количества повторений используются фигурные скобки.

Ровно N повторений

\d{3}

соответствует трём цифрам подряд:

  • 123
  • 555

Не менее N повторений

\w{2,}

соответствует двум и более буквам или цифрам подряд.

Подойдут:

  • ab
  • abc
  • test123

От N до M повторений

[a-zA-Z]{1,3}

соответствует одной, двум или трём латинским буквам.

Подойдут:

  • a
  • ab
  • abc

Не подойдут:

  • abcd
  • 123

Где проверять регулярные выражения

Перед использованием рекомендуется протестировать выражение на специальных сервисах:

  • Regex101
  • RegExr

Они позволяют проверить, какие строки будут найдены, а также помогают понять, как работает составленное выражение.

Обратите внимание: данные сервисы являются сторонними инструментами. Сервис Senler не отвечает за их работу и корректность результатов.

Готовые регулярные выражения для популярных задач

Ниже приведены примеры регулярных выражений, которые часто используются в ботах и автоматизациях.

Проверка номера телефона РФ

Позволяет проверить номер в формате +7XXXXXXXXXX или 8XXXXXXXXXX.

^(\+7|8)\d{10}$

Подойдут:

  • +79001234567
  • 89001234567

Проверка адреса электронной почты

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

Подойдут:

Проверка даты в формате ДД.ММ.ГГГГ

^\d{2}\.\d{2}\.\d{4}$

Подойдут:

  • 01.01.2025
  • 31.12.2026

Проверка года рождения

Для пользователей, родившихся с 1900 по 2099 год.

^(19|20)\d{2}$

Подойдут:

  • 1998
  • 2005

Проверка возраста

Возраст от 1 до 120 лет.

^([1-9]|[1-9]\d|1[01]\d|120)$

Подойдут:

  • 18
  • 35
  • 120

Проверка имени

Разрешены только русские буквы, дефис и пробел.

^[А-Яа-яЁё -]+$

Подойдут:

  • Иван
  • Анна-Мария
  • Мария Петрова

Проверка имени и фамилии

Требуется минимум два слова.

^[А-Яа-яЁё]+(?: [А-Яа-яЁё]+)+$

Подойдут:

  • Иван Иванов
  • Анна Мария Петрова

Проверка ссылки на профиль VK

^https:\/\/vk\.com\/[A-Za-z0-9_.]+$

Подойдут:

Проверка ссылки на Telegram

^https:\/\/t\.me\/[A-Za-z0-9_]+$

Подойдут:

Проверка числового значения

Только целое число.

^\d+$

Подойдут:

  • 10
  • 250
  • 9999

Проверка дробного числа

Допускается точка или запятая.

^\d+([.,]\d+)?$

Подойдут:

  • 10
  • 10.5
  • 10,5

Проверка промокода

Только латинские буквы и цифры, длина от 4 до 20 символов.

^[A-Za-z0-9]{4,20}$

Подойдут:

  • SALE2025
  • BONUS10

Проверка ИНН физического лица

12 цифр.

^\d{12}$

Проверка ИНН организации

10 цифр.

^\d{10}$

Проверка почтового индекса РФ

6 цифр.

^\d{6}$

Проверка даты рождения

Формат ДД.ММ.ГГГГ.

^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])\.(19|20)\d{2}$

Проверка ответа «Да» или «Нет»

^(да|нет)$

Проверка нескольких ключевых слов

^(хочу бонус|хочу подарок|хочу скидку)$

Совпадение произойдёт только при вводе одной из указанных фраз.

Поиск любого номера телефона внутри сообщения

Подходит для ситуаций, когда пользователь пишет номер вместе с другим текстом.

(\+7|8)\d{10}

Например:

  • Мой номер 89001234567
  • Позвоните на +79001234567

Поиск даты внутри сообщения

\d{2}\.\d{2}\.\d{4}

Например:

  • Родился 01.01.2000
  • Встреча состоится 15.09.2026