Lekcje modułu (4/4)
Znak ucieczki dla metaznaków
Niektóre znaki w wyrażeniach regularnych mają specjalne znaczenie: nazywane są metaznakami. Jeśli chcesz dopasować dosłowny znak (np. prawdziwą kropkę ., prawdziwy plus +, prawdziwy nawias), musisz poprzedzić go ukośnikiem wstecznym (backslashem) \, co go escapuje (maskuje).
Metaznaków do zapamiętania jest dwanaście:
. * + ? ^ $ | \ ( ) [ ] { } /(Znak / nie jest w rzeczywistości metaznakiem silnika wyrażeń regularnych, ale musi być escapowany w dosłownym zapisie JavaScript /.../.)
Pattern: \$\d+\.\d\d
Sample: Prezzi: $9.99, $12.50, totale $22.49.
^^^^^ ^^^^^^ ^^^^^^Tutaj escapujemy znak $ (kotwica końca ciągu znaków) oraz . (znak wieloznaczny), aby dopasować dosłowne znaki w formacie ceny "dolar + liczba + kropka + dwie cyfry".
Podwójny backslash w ciągach znaków JS
Kiedy piszesz wzorzec wewnątrz ciągu znaków JavaScript (tak jak robisz to w naszych ćwiczeniach), backslash musi być podwojony. Ciąg znaków JS '\\d' zawiera dwa znaki (\ i d) i odpowiada dokładnie wzorcowi wyrażenia regularnego \d.
const re1 = /\d+/; // zapis dosłowny: pojedynczy backslash
const re2 = new RegExp('\\d+'); // ciąg znaków: podwójny backslashEdytor kursu pokazuje wzorzec już zdekodowany (widzisz pojedynczy \d); nie musisz samodzielnie niczego podwajać.
12 specjalnych metaznaków
Znakami o specjalnym znaczeniu w silniku są dokładnie: \\ ^ $ . | ? * + ( ) [ {. Jeśli chcesz dopasować je jako dosłowny tekst, musisz poprzedzić je backslashem. W niektórych środowiskach (np. w zwykłych ciągach znaków JS) konieczne może być podwojenie backslasha (\\\\).
Spróbuj sam
Znajdź każdą cenę w formacie `$N.NN` (dolar, jedna lub więcej cyfr, kropka, dwie cyfry). Pamiętaj o escapowaniu `$` i `.`.
Pokaż wskazówkę
$ musi być escapowany jako \$, kropka jako \. - w przeciwnym razie kropka dopasuje dowolny znak.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Znajdź każdy dosłowny znak zapytania `?` w tekście. Znak `?` jest metaznakiem: musi być escapowany.
Pokaż wskazówkę
Bez escapowania ? byłby kwantyfikatorem (moduł 2). Umieść \ przed nim.
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Znajdź wszystkie wystąpienia `.tar.gz` w tekście, upewniając się, że kropki są dopasowywane dosłownie.
Pokaż wskazówkę
Wstaw backslash przed każdą kropką, aby ją wyescapować.
Rozwiązanie dostępne po 3 próbach