Direct naar de hoofdinhoud
Module 7 · Les 2 van 426/32 in de cursus~10 min
Modulelessen (2/4)

Basisvervanging en `$1`

In JavaScript voert String.prototype.replace(regex, replacement) een patroonovereenkomst en vervangt elke overeenkomst door de gegeven string. Met de g markeer het vervangt alle overeenkomsten; zonder dit, alleen de eerste. replaceAll dwingt het globale gedrag af (en vereist de vlag g op de regex).

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

Verwijzingen in de vervangende tekenreeks

Binnenin de vervangende string, deze zijn speciaal:

  • $1, $2, \u2026 -- terugverwijzing naar de genummerde groep van de regex.
  • $<name> -- terugverwijzing naar de benoemde groep.
  • $& -- de hele wedstrijd.
  • `$`` -- sms voor de wedstrijd.
  • $' -- sms na de wedstrijd.
  • $$ -- een enkele letterlijke $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Formatteer de datum opnieuw door de volgorde om te keren. De regex heeft 3 groepen, en in de vervangende tekenreeks waarnaar u verwijst als $1, $2, $3.

Speciale referenties bij vervangingen

Naast $1 en $2 kunt u $& gebruiken om de volledige overeenkomende tekst in te voegen, $ for all text preceding the match, and$'` voor alle tekst die erna komt. Dit maakt rijke vervangingen mogelijk, zelfs zonder JS-code te schrijven.

Probeer het

Oefening#regex.m7.l2.e1
Pogingen: 0Laden…

Vind elke datum in het JJJJ-MM-DD-formaat met drie groepen (jaar, maand, dag). Op deze manier kunt u vervangen gebruiken om DD/MM/JJJJ te verkrijgen.

Editor laden…
Toon hint

Vervang \\d+ door \\d{4}, \\d{2}, \\d{2} binnen drie groepen vastgelegd met (...).

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m7.l2.e2
Pogingen: 0Laden…

Zoek 'eerste laatste' als twee benoemde groepen `nome` en `cognome`, zodat je het kunt herschrijven als `cognome, nome` met behulp van `$<cognome>, $<nome>`.

Editor laden…
Toon hint

Gebruik (?<naam>\\w+) en (?<cognome>\\w+) gescheiden door \\s+.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m7.l2.e3
Pogingen: 0Laden…

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

Editor laden…
Toon hint

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

Oplossing beschikbaar na 3 pogingen