⊗jsSpRERMC 127 of 294 menu

Callback i metoden replace i reguljära uttryck i JavaScript

Metoden replace kan ta emot inte bara en sträng som andra parameter, utan också en callback-funktion, som kommer att tillämpas för varje funnet matchning. Varje delsträng som det reguljära uttrycket hittar kommer att ersättas med vad denna funktion returnerar för just den delsträngen.

Parametrar kan skickas in i denna funktion: i den första parametern kommer den hittade strängen att läggas, i den andra parametern - den första fånggruppen, i den tredje parametern - den andra fånggruppen och så vidare - du kan göra lika många parametrar som det finns fånggrupper i det reguljära uttrycket.

I den näst sista parametern kommer positionen för den hittade matchningen att läggas, och i den sista - hela strängen som sökningen görs på.

Hur allt detta fungerar - vi kommer att gå igenom med praktiska exempel.

Exempel

Låt oss anta att vi har en sträng med siffror:

let str = '2 3 4 5';

Låt oss ersätta dessa siffror med deras kvadrater. Låt oss först bara skriva ut våra siffror i tur och ordning i konsolen i callback-funktionen:

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

Vår kod kommer först att skriva ut '2', sedan '3', '4' och '5'. Det vill säga i variabeln match hamnar sekventiellt de strängar som det reguljära uttrycket hittade.

Låt oss lösa uppgiften till slut - låt oss upphöja match i kvadrat och returnera det med hjälp av return. Det kommer att resultera i att för den hittade tvåan returneras 4 och tvåan ersätts med denna fyra, för den hittade trean returneras 9 och trean ersätts med denna nia - och så vidare:

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

Exempel

Låt oss nu anta att strängen innehåller konstruktioner av typen '2+3=':

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

Låt oss se till att summan av motsvarande tal sätts in efter likhetstecknet. Det vill säga, vår sträng bör förvandlas till följande:

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

För att lösa uppgiften, låt oss experimentera igen - lägg första och andra termen i separata fånggrupper:

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

Och låt oss nu slutgiltigt lösa uppgiften: för varje hittad delsträng, summera den första och andra fånggruppen, ta den nollte fånggruppen (den hittade strängen, till exempel '2+3='), lägg till den till resultatet och returnera allt detta 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);

Praktiska uppgifter

Given en sträng:

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

Hitta talen inom hakparenteser och öka dem två gånger. Det vill säga, från vår sträng bör följande erhållas:

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

Given en sträng:

let str = '123 456 789';

Hitta alla tal och vänd på deras siffror i omvänd ordning. Det vill säga, från vår sträng bör följande erhållas:

'321 654 987'

Given en sträng med datum:

let str = '31.12.2025 30.11.2024 29.10.2023';

Hitta alla datum och omvandla dem till ett annat format så att följande sträng erhålls:

'2025-12-31 2024-11-30 2023-10-29'
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa