Salt la conținutul principal
Modulul 7 · Lecția 2 din 426/32 în curs~10 min
Lecții din modul (2/4)

Înlocuire de bază și `$1`

În JavaScript, String.prototype.replace(regex, replacement) efectuează a potrivirea modelului și înlocuiește fiecare potrivire cu șirul dat. Cu g flag-ul înlocuiește toate meciurile; fara el, doar primul. replaceAll forțează comportamentul global (și necesită indicatorul g pe regex).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

Referințe în șirul de înlocuire

În interiorul șirului de înlocuire, acestea sunt speciale:

  • $1, $2, \u2026 -- referință la grupul numerotat al expresiei regex.
  • $<name> -- referință la grupul numit.
  • $& -- întregul meci.
  • `$`` -- text inainte meciului.
  • $' -- text după meci.
  • $$ -- un singur literal $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Reformatați data inversând ordinea. Regex are 3 grupuri, iar în șir de înlocuire le referiți ca $1, $2, $3.

Referințe speciale în înlocuiri

Pe lângă $1 și $2, puteți folosi $& pentru a insera întregul text potrivit, $ for all text preceding the match, and$'` pentru tot textul care îl urmează. Acest lucru permite înlocuiri bogate chiar și fără a scrie cod JS.

Încearcă

Exercițiu#regex.m7.l2.e1
Încercări: 0Se încarcă…

Găsiți fiecare dată în formatul AAAA-LL-ZZ cu trei grupuri (an, lună, zi). În acest fel, puteți folosi înlocui pentru a obține ZZ/LL/AAAA.

Se încarcă editorul...
Afișează indiciu

Înlocuiți \\d+ cu \\d{4}, \\d{2}, \\d{2} în cadrul a trei grupuri capturate cu (...).

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#regex.m7.l2.e2
Încercări: 0Se încarcă…

Găsiți „primul ultimul” ca două grupuri numite „nome” și „cognome”, astfel încât să îl puteți rescrie ca „cognome, nome” folosind „$<cognome>, $<nome>”.

Se încarcă editorul...
Afișează indiciu

Folosiți (?<nume>\\w+) și (?<cognome>\\w+) separate prin \\s+.

Soluție disponibilă după 3 încercări

Provocare suplimentară

Exercițiu#regex.m7.l2.e3
Încercări: 0Se încarcă…

Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.

Se încarcă editorul...
Afișează indiciu

Use two capture groups for last and first name; the replacement will be performed via $2 $1.

Soluție disponibilă după 3 încercări