webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
JavaScript · Урок 6 из 17

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

Элементы, квантификаторы, группы, флаги и когда не стоит использовать regex.

Обновлено

Что такое регулярное выражение

Регулярное выражение (regex) — это шаблон, который описывает, как выглядит текст: «начинается с заглавной буквы», «содержит номер телефона», «это индекс из 6 цифр». С его помощью можно проверять, искать, извлекать и заменять фрагменты текста.

/^\d{6}$/.test('101000')            // true — ровно 6 цифр
'Tel: 0722 123 456'.match(/\d+/g)    // ['0722', '123', '456']
'a-b-c'.replace(/-/g, ' ')           // 'a b c'

Поначалу выглядит загадочно, но это всего несколько элементов в комбинации.

Базовые элементы

Элемент Совпадает с Пример
abc ровно этим текстом /cat/
. любым символом (кроме перевода строки) /c.t/ → cat, cut
\d / \w / \s цифрой / буквой-цифрой-подчёркиванием / пробельным символом /\d\d/
[abc] / [a-z] / [^0-9] одним из набора / диапазоном / чем угодно, кроме /[aeiou]/
^ / $ началом / концом текста /^Hello/
\b границей слова /\bvar\b/
\. \? \( спецсимволами как текстом /\.js$/

Квантификаторы — сколько раз

Квантификатор Означает
? 0 или 1 (необязательно)
* 0 или больше
+ 1 или больше
{3} / {2,4} / {2,} ровно 3 / от 2 до 4 / минимум 2

По умолчанию они жадные (берут как можно больше); с ? после них становятся ленивыми: /<.+?>/ останавливается на первом >.

Группы

const m = '2026-10-08'.match(/(\d{4})-(\d{2})-(\d{2})/)
m[1] // '2026'

const { groups } = '2026-10-08'.match(/(?<year>\d{4})-(?<month>\d{2})/)
groups.year // '2026' — именованные группы читаются лучше

/(?:ab)+/    // группа без захвата — только чтобы применить + к «ab»
/cat|dog/    // альтернатива

Флаги

Флаг Эффект
g все совпадения, а не только первое
i без учёта регистра
m ^ и $ на каждой строке
u корректный Unicode (диакритика, кириллица, emoji) — используйте по умолчанию

Методы — что и когда

Нужно Метод
да / нет regex.test(str)
первое совпадение + группы str.match(regex) (без g)
все совпадения с группами [...str.matchAll(/.../g)]
замена str.replace(regex, 'x') / replaceAll / с функцией: replace(re, m => ...)
разбиение str.split(/\s*,\s*/)

Когда regex не нужен

  • Полностью корректный email — практически невозможно; используйте type="email" / z.email().
  • HTML / JSON — используйте парсер (DOMParser, JSON.parse).
  • URL — new URL().
  • Огромные regex, которые никто уже не может прочитать, — лучше несколько простых проверок.

Коротко

  • Regex = шаблон текста: элементы (\d, [a-z], ^ $) + квантификаторы (+ * ? {n}) + группы.
  • test для да/нет, matchAll для извлечения, replace для замены; флаги g i u.
  • Для email, HTML, URL используйте специальные инструменты.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.