Przejdź do głównej treści
eLearner.app
Moduł 7 · Lekcja 1 z 425/32 w kursie~12 min
Lekcje modułu (1/4)

Wszystkie flagi w szczegółach

Kompletne podsumowanie wszystkich flag dostępnych w nowoczesnym JavaScript (ES2024). Flaga to pojedynczy znak, który modyfikuje zachowanie wyrażenia regularnego; można je łączyć w dowolnej kolejności.

FlagaNazwaDziałanie
gGlobalZnajduje wszystkie dopasowania, a nie tylko pierwsze (wymagane dla matchAll).
iIgnore caseIgnoruje wielkość liter (w tym znaki Unicode przy użyciu flagi u/v).
mMultiline^ i $ dopasowują początek/koniec linii, a no nie tylko całego ciągu znaków.
sDot allKropka . dopasowuje również znak nowej linii \n.
uUnicodePrawidłowa obsługa punktów kodowych > 0xFFFF oraz włączenie obsługi \\p{...}.
vUnicode v-modeNowoczesne rozszerzenie flagi u o operacje na zbiorach ([abc&&[def]]).
yStickyDopasowuje tylko od pozycji lastIndex, bez pomijania znaków.
dHas indicesWynik zawiera właściwość indices z pozycją początku/końca każdej grupy.
JS
const re = /foo/gimu; // global + ignore case + multiline + unicode
re.flags; // "gimu" (zawsze w kolejności kanonicznej: dgimsuvy)

Typowe kombinacje

  • g + i -- "znajdź wszystko, ignorując wielkość liter". 80% praktycznych zastosowań.
  • g + m -- do dopasowywania linia po linii w tekście wielolinijkowym.
  • g + s -- "kropka dopasowuje wszystko, w tym znaki nowej linii". Przydatne do wyodrębniania bloków tekstu rozciągających się na wiele linii.
  • u (lub v) -- zawsze, gdy przetwarzasz rzeczywisty tekst w dowolnym języku lub emotikony.

Tryb Unicode v-mode i ewolucja flag

Flaga v (dostępna od ES2024) zastępuje flagę u i umożliwia zaawansowane operacje na zbiorach, takie jak iloczyn (przecięcie) i różnica klas znaków (np. [\\p{White_Space}&&\\p{ASCII}]).

Spróbuj sam

Ćwiczenie#regex.m7.l1.e1
Próby: 0Ładowanie...

Znajdź wszystkie wystąpienia słowa 'ciao' bez względu na wielkość liter. Użyj odpowiedniej flagi.

Ładowanie edytora...
Pokaż wskazówkę

Dodaj flagę i (ignorowanie wielkości liter) obok g.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#regex.m7.l1.e2
Próby: 0Ładowanie...

Znajdź blok pomiędzy `<pre>` a `</pre>`, nawet jeśli zawiera znaki nowej linii. Musisz użyć flagi, która sprawia, że kropka dopasowuje również znaki nowej linii.

Ładowanie edytora...
Pokaż wskazówkę

Dodaj flagę s, aby kropka dopasowywała również znaki nowej linii, oraz użyj leniwego .+?, aby zatrzymać się na pierwszym </pre>.

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#regex.m7.l1.e3
Próby: 0Ładowanie...

Dopasuj sekwencje znaków ASCII, jawnie wykluczając cyfry, przy użyciu właściwości trybu Unicode v-mode (flaga `v`) i składni różnicy zbiorów `[\p{ASCII}--\p{Nd}]+`.

Ładowanie edytora...
Pokaż wskazówkę

Użyj flagi v i zapisz różnicę zbiorów [\p{ASCII}--\p{Nd}]+, aby wykluczyć cyfry.

Rozwiązanie dostępne po 3 próbach