Przejdź do głównej treści
eLearner.app
Moduł 7 · Lekcja 2 z 426/32 w kursie~10 min
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).

JS
'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 $.
JS
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

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

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.

Ładowanie edytora...
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

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

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>`.

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

Użyj (?<nome>\w+) i (?<cognome>\w+) rozdzielonych za pomocą \s+.

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

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

Utwórz wzorzec przechwytujący, aby odwrócić kolejność imienia i nazwiska z formatu `Nazwisko, Imię` na format `Imię Nazwisko`.

Ładowanie edytora...
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