Перейти до основного вмісту
Модуль 7 · Урок 1 із 425/32 у курсі~12 min
Модульні уроки (1/4)

Всі прапори в деталях

Повне резюме всіх прапорів, доступних у сучасному JavaScript (ES2024). Прапор - це один символ, який змінює поведінку регулярний вираз; їх можна комбінувати в будь-якому порядку.

ПрапорІм'яЕфект
gГлобальнийЗнаходить усі збіги, а не лише перші (потрібно для matchAll).
iІгнорувати регістрРегістр не враховується (включаючи символи Unicode з прапорцем u/v).
mБагаторядковий^ та $ відповідають початку/кінцю рядка, а не лише рядка.
sКрапка все. також відповідає новому рядку \n.
uUnicodeПравильна обробка кодових точок > 0xFFFF і вмикає \\p{...}.
vUnicode v-modeСучасне розширення u з операціями набору ([abc&&[def]]).
yЛипкийЗбіги лише з позиції lastIndex, без пропуску.
dМає індексиРезультат містить indices з початком/кінцем кожної групи.
JS
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}]).

Спробуйте

вправи#regex.m7.l1.e1
Спроби: 0Завантаження…

Знайти всі входження "ciao" незалежно від регістру. Використовуйте правильний прапор.

Завантаження редактора…
Показати підказку

Додайте позначку i (незалежно від регістру) поруч із g.

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m7.l1.e2
Спроби: 0Завантаження…

Знайдіть блок між `<pre>` і `</pre>`, навіть якщо він містить нові рядки. Ви повинні використовувати прапорець, який робить так, щоб крапка також збігалася з новими рядками.

Завантаження редактора…
Показати підказку

Add the s flag so . також відповідає символам нового рядка та використовує lazy .+? щоб зупинитися на першому </pre>.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m7.l1.e3
Спроби: 0Завантаження…

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 спроб