Модульні уроки (1/4)
Всі прапори в деталях
Повне резюме всіх прапорів, доступних у сучасному JavaScript (ES2024). Прапор - це один символ, який змінює поведінку регулярний вираз; їх можна комбінувати в будь-якому порядку.
| Прапор | Ім'я | Ефект |
|---|---|---|
g | Глобальний | Знаходить усі збіги, а не лише перші (потрібно для matchAll). |
i | Ігнорувати регістр | Регістр не враховується (включаючи символи Unicode з прапорцем u/v). |
m | Багаторядковий | ^ та $ відповідають початку/кінцю рядка, а не лише рядка. |
s | Крапка все | . також відповідає новому рядку \n. |
u | Unicode | Правильна обробка кодових точок > 0xFFFF і вмикає \\p{...}. |
v | Unicode v-mode | Сучасне розширення 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) -- завжди, якщо ви маєте справу з реальним текстом будь-якою мовою чи емодзі.
Еволюція v-mode та прапора Unicode
Прапор v (доступний у ES2024) замінює u та дозволяє розширені операції над наборами, такі як перетин класу символів і віднімання (наприклад, [\\p{White_Space}&&\\p{ASCII}]).
Спробуйте
Знайти всі входження "ciao" незалежно від регістру. Використовуйте правильний прапор.
Показати підказку
Додайте позначку i (незалежно від регістру) поруч із g.
Рішення доступне після 3 спроб
Повторна вправа
Знайдіть блок між `<pre>` і `</pre>`, навіть якщо він містить нові рядки. Ви повинні використовувати прапорець, який робить так, щоб крапка також збігалася з новими рядками.
Показати підказку
Add the s flag so . також відповідає символам нового рядка та використовує 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 спроб