--- title: Продвинутые регулярные выражения slug: прочее-регулярные-выражения/продвинутые-регулярные-выражения --- # Продвинутые операторы регулярных выражений Эти конструкции дают больше контроля над поиском и заменой текста. --- ## 🧱 1. `{n}`, `{n,}`, `{n,m}` — точное количество повторений - `{n}` — ровно n повторений - `{n,}` — минимум n повторений - `{n,m}` — от n до m повторений **Примеры:** - `a{3}` — `aaa` - `a{2,4}` — `aa`, `aaa`, `aaaa` --- ## 2. `(?...)` — специальные конструкции ### 2.1 `(?:...)` — негруппирующая скобка - Не сохраняет группу для дальнейшего обращения **Пример:** - `(?:abc)+` — совпадает с `abcabc`, но не сохраняет `abc` как отдельную группу ### 2.2 `(?=...)` — позитивная опережающая проверка (lookahead) - Условие, что **далее по тексту есть шаблон** **Пример:** - `\d(?=px)` — цифра перед `px`, например: `5px` → совпадает `5` ### 2.3 `(?!...)` — негативная опережающая проверка - Условие, что **далее по тексту нет шаблона** **Пример:** - `foo(?!bar)` — найдёт `foo`, не за которым идёт `bar` --- ## 3. `(?<=...)` и `(?[^()]+|(?R))*\) ``` Этот шаблон находит корректно вложенные скобки. Используется редко. --- ## 6. Обратные ссылки (Backreferences) Позволяют ссылаться на уже найденные группы. **Пример:** - Шаблон: `(\w+) \1` - Совпадёт с: `test test`, `hello hello` --- ## 7. Условные выражения Поддерживаются не везде, но позволяют задать условия: ```regexp (?(1)yes|no) ``` Если группа 1 существует, будет `yes`, иначе `no`. --- ## Полезные ресурсы - [regex101.com](https://regex101.com/) - [Regular Expressions Cheat Sheet (MDN)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Cheatsheet) - [rexegg.com](https://www.rexegg.com/)