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).
'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$.
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
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.
Toon hint
Vervang \\d+ door \\d{4}, \\d{2}, \\d{2} binnen drie groepen vastgelegd met (...).
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Zoek 'eerste laatste' als twee benoemde groepen `nome` en `cognome`, zodat je het kunt herschrijven als `cognome, nome` met behulp van `$<cognome>, $<nome>`.
Toon hint
Gebruik (?<naam>\\w+) en (?<cognome>\\w+) gescheiden door \\s+.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.
Toon hint
Use two capture groups for last and first name; the replacement will be performed via $2 $1.
Oplossing beschikbaar na 3 pogingen