⊗jsSpRERMC 127 of 294 menu

Callback i replace-metoden i JavaScript regex

Replace-metoden kan ta ikke bare en streng, men også en callback-funksjon som andre parameter, som vil bli brukt for hvert funnet treff. Hver delstreng som regexen finner, vil bli erstattet med det denne funksjonen returnerer for nettopp denne delstrengen.

Til denne funksjonen kan parametere sendes: i den første parameteren vil den funnete strengen legges, i den andre parameteren - den første fangstgruppen, i den tredje parameteren - den andre fangstgruppen og så videre - du kan lage like mange parametere som det er fangstgrupper i det regulære uttrykket.

I den nest siste parameteren vil posisjonen til det funne treffet legges, og i den siste - hele strengen det søkes i.

Hvordan alt dette fungerer - vil vi gå gjennom med praktiske eksempler.

Eksempel

La det være gitt en streng med tall:

let str = '2 3 4 5';

La oss erstatte disse tallene med deres kvadrater. La oss først bare skrive ut tallene våre en etter en i konsollen i callback-funksjonen:

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

Koden vår vil først skrive ut '2', deretter '3', '4' og '5'. Det vil si at i variabelen match havner de strengene som regexen fant, sekvensielt.

La oss løse oppgaven fullstendig - vi vil opphøye match i andre potens og returnere den med return. Det vil bli slik at for den funnete toeren returneres 4 og toeren erstattes med denne fireren, for den funnete treeren returneres 9 og treeren erstattes med denne nieren - og så videre:

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

Eksempel

La det nå i strengen være gitt konstruksjoner av typen '2+3=':

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

La oss gjøre slik at det etter likhetstegn settes inn summene av de tilsvarende tallene. Det vil si at vår streng skal bli til følgende:

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

For å løse oppgaven, la oss eksperimentere igjen - la oss legge det første og andre leddet i separate fangstgrupper:

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

Og la oss nå endelig løse oppgaven: for hver funnet delstreng, la oss summere den første og andre fangstgruppen, ta den nullte fangstgruppen (den funne strengen, for eksempel '2+3='), legge til den til resultatet og returnere alt dette 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);

Praktiske oppgaver

Det er gitt en streng:

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

Finn tallene som står i parentes og øk dem to ganger. Det vil si at fra vår streng skal følgende bli resultatet:

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

Det er gitt en streng:

let str = '123 456 789';

Finn alle tallene og reverser sifrene deres i omvendt rekkefølge. Det vil si at fra vår streng skal følgende bli resultatet:

'321 654 987'

Det er gitt en streng med datoer:

let str = '31.12.2025 30.11.2024 29.10.2023';

Finn alle datoer og transformer dem til et annet format slik at følgende streng blir resultatet:

'2025-12-31 2024-11-30 2023-10-29'
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis