⊗jsSpRERMC 127 of 294 menu

Callback in de replace methode in JavaScript regex

De replace methode kan als tweede parameter niet alleen een string accepteren, maar ook een callback-functie, die voor elke gevonden overeenkomst wordt toegepast. Elke substring die door de regex wordt gevonden, wordt vervangen door wat deze functie specifiek voor die substring teruggeeft.

Aan deze functie kunnen parameters worden doorgegeven: in de eerste parameter komt de gevonden string, in de tweede parameter - de eerste capture group, in de derde parameter - de tweede capture group en zo verder - je kunt zoveel parameters maken als er capture groups in de reguliere expressie zijn.

In de voorlaatste parameter komt de positie van de gevonden overeenkomst, en in de laatste - de gehele string waarop wordt gezocht.

Hoe dit allemaal werkt - laten we bekijken met praktische voorbeelden.

Voorbeeld

Stel we hebben een string met getallen:

let str = '2 3 4 5';

Laten we deze getallen vervangen door hun kwadraten. Laten we eerst onze getallen simpelweg een voor een in de console uitvoeren in de callback-functie:

str.replace(/\d+/g, function(match) { console.log(match); });

Onze code zal eerst '2' uitvoeren, daarna '3', '4' en '5'. Dat betekent dat in de variabele match achtereenvolgens de strings terechtkomen die de regex heeft gevonden.

Laten we de taak volledig oplossen - we zullen match kwadrateren en teruggeven met return. Het resultaat is dat voor de gevonden twee 4 wordt teruggegeven en de twee wordt vervangen door deze vier, voor de gevonden drie wordt 9 teruggegeven en de drie wordt vervangen door deze negen - en zo verder:

let result = str.replace(/\d+/g, function (match) { return match**2; }); console.log(result); // geeft '4 9 16 25' weer

Voorbeeld

Stel dat er nu in de string constructies zijn van het type '2+3=':

let str = '2+3= 4+5= 6+7=';

Laten we ervoor zorgen dat na het is-gelijk-teken de som van de corresponderende getallen wordt ingevoegd. Dat betekent dat onze string moet veranderen in het volgende:

'2+3=5 4+5=9 6+7=13'

Laten we om de taak op te lossen weer experimenteren - we splitsen de eerste en tweede term in aparte capture groups:

str.replace(/(\d+)\+(\d+)=/g, function (match0, match1, match2) { console.log(match0, match1, match2); });

En nu lossen we de taak definitief op: voor elke gevonden substring tellen we de eerste en tweede capture group op, nemen we de nulde capture group (de gevonden string, bijvoorbeeld '2+3='), voegen we daar het resultaat aan toe en geven we alles terug via return:

let result = str.replace(/(\d+)\+(\d+)=/g, function(match0, match1, match2) { let sum = Number(match1) + Number(match2); return match0 + sum; }); console.log(result);

Praktische taken

Gegeven een string:

let str = 'aaa [2] bbb [3] ccc [12] ddd';

Vind de getallen tussen haakjes en vergroot ze twee keer. Dat betekent dat uit onze string de volgende moet ontstaan:

'aaa [4] bbb [6] ccc [24] ddd'

Gegeven een string:

let str = '123 456 789';

Vind alle getallen en draai hun cijfers om in omgekeerde volgorde. Dat betekent dat uit onze string de volgende moet ontstaan:

'321 654 987'

Gegeven een string met data:

let str = '31.12.2025 30.11.2024 29.10.2023';

Vind alle data en converteer ze naar een ander formaat zodat de volgende string ontstaat:

'2025-12-31 2024-11-30 2023-10-29'
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren