Lekcje modułu (2/4)
Podstawowa zamiana i `$1`
W języku JavaScript metoda String.prototype.replace(regex, replacement) dopasowuje wzorzec i zastępuje każde dopasowanie podanym ciągiem znaków. Z flagą g zastępuje wszystkie dopasowania; bez niej tylko pierwsze. Metoda replaceAll wymusza działanie globalne (i wymaga użycia flagi g w wyrażeniu regularnym).
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"Referencje w ciągu zamiennym
Wewnątrz ciągu zamiennego następujące zapisy mają specjalne znaczenie:
$1,$2, … -- referencja wsteczna do grupy numerowanej wyrażenia regularnego.$<name>-- referencja wsteczna do grupy nazwanej.$&-- całe dopasowanie.- `$`` -- tekst przed dopasowaniem.
$'-- tekst po dopasowaniu.$$-- pojedynczy, dosłowny znak$.
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"Ponowne formatowanie daty poprzez odwrócenie kolejności. Wyrażenie ma 3 grupy, a w ciągu zamiennym odwołujesz się do nich jako $1, $2, $3.
Specjalne referencje w operacjach zamiany
Oprócz $1 y $2 możesz użyć $&, aby wstawić cały dopasowany tekst, $\`` dla całego tekstu poprzedzającego dopasowanie oraz $'` dla całego tekstu następującego po nim. Pozwala to na wykonywanie złożonych zamian nawet bez pisania kodu JS.
Spróbuj sam
Znajdź każdą datę w formacie RRRR-MM-DD za pomocą trzech grup (rok, miesiąc, dzień). W ten sposób można użyć replace, aby uzyskać format DD/MM/RRRR.
Pokaż wskazówkę
Zastąp \d+ wyrażeniami \d{4}, \d{2}, \d{2} wewnątrz trzech grup przechwytujących (...).
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Znajdź 'imię nazwisko' jako dwie grupy nazwane `nome` i `cognome`, dzięki czemu będzie można zapisać je jako `cognome, nome` przy użyciu `$<cognome>, $<nome>`.
Pokaż wskazówkę
Użyj (?<nome>\w+) i (?<cognome>\w+) rozdzielonych za pomocą \s+.
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Utwórz wzorzec przechwytujący, aby odwrócić kolejność imienia i nazwiska z formatu `Nazwisko, Imię` na format `Imię Nazwisko`.
Pokaż wskazówkę
Użyj dwóch grup przechwytujących dla nazwiska i imienia; zamiana zostanie wykonana za pomocą $2 $1.
Rozwiązanie dostępne po 3 próbach