Уроки модуля (1/4)
Все флаги подробно
Полный обзор всех флагов, доступных в современном JavaScript. (ES2024). Флаг — это одиночный символ, который изменяет поведение регулярное выражение; их можно комбинировать в любом порядке.
| Флаг | Имя | Эффект |
|---|---|---|
g | Глобальный | Находит все совпадения, а не только первое (требуется для matchAll). |
i | Игнорировать регистр | Без учета регистра (включая символы Юникода с флагом u/v). |
m | Многострочный | ^ и $ соответствуют началу/концу строки, а не только строки. |
s | Расставить все точки | . также соответствует новой строке \n. |
u | Юникод | Правильная обработка кодовых точек > 0xFFFF и включает \\p{...}. |
v | Юникод v-режим | Современное расширение u с операциями над множествами ([abc&&[def]]). |
y | Липкий | Соответствует только с позиции lastIndex, без пропусков. |
d | Имеет индексы | Результат включает indices с началом/концом каждой группы. |
const re = /foo/gimu; // global + insensitive + multiline + unicode
re.flags; // "gimu" (always in canonical order: dgimsuvy)Типичные комбинации
g+i-- "найти всё, без учета регистра". 80% практического использования.g+m-- для построчного сопоставления в многострочном тексте.g+s-- "точка соответствует чему угодно, включая символы новой строки". Полезно для извлечения блоков из нескольких строк. –u(илиv) – всегда, если вы имеете дело с реальным текстом на любом языке или эмодзи.
Unicode v-режим и эволюция флагов
Флаг v (доступен в ES2024) заменяет u и обеспечивает расширенные операции с наборами, такие как пересечение и вычитание классов символов (например, [\\p{White_Space}&&\\p{ASCII}]).
Попробуйте это
Найдите все вхождения слова «ciao» независимо от регистра. Use the correct flag.
Показать подсказку
Добавьте флаг i (без учета регистра) рядом с g.
Решение доступно после 3 попыток
Обзор упражнения
Найдите блок между `<pre>` и `</pre>`, даже если он содержит символы новой строки. Вы должны использовать флаг, который заставляет точку также соответствовать новой строке.
Показать подсказку
Добавьте флаг s так. также соответствует символам новой строки и использует lazy .+? остановиться на первом </pre>.
Решение доступно после 3 попыток
Дополнительная задача
Match sequences of ASCII characters, explicitly excluding digits, using Unicode v-mode properties (flag `v`) and set subtraction syntax `[\p{ASCII}--\p{Nd}]+`.
Показать подсказку
Используйте флаг v и напишите вычитание множества [\\p{ASCII}--\\p{Nd}]+, чтобы исключить числа.
Решение доступно после 3 попыток