⊗jsSpRERMC 127 of 294 menu

Callback u metodi replace u regularnim izrazima JavaScript

Metod replace kao drugi parametar može prihvatiti ne samo string, već i callback funkciju, koja će se primeniti za svako pronađeno podudaranje. Svaki podstring koji regularni izraz pronadje zameniće se onim što ova funkcija vrati upravo za taj podstring.

U ovu funkciju se mogu proslediti parametri: u prvi parametar će se smestiti pronađeni string, u drugi parametar - prva grupa (capturing group), u treći parametar - druga grupa i tako dalje - možete navesti onoliko parametara, koliko ima grupa u regularnom izrazu.

U pretposlednji parametar će se smestiti pozicija pronađenog podudaranja, a u poslednji - ceo string, po kome se vrši pretraga.

Kako sve ovo funkcioniše - pogledaćemo na praktičnim primerima.

Primer

Neka je dat string sa brojevima:

let str = '2 3 4 5';

Zamenimo ove brojeve njihovim kvadratima. Za početak, hajde da jednostavno ispišemo naše brojeve jedan za drugim u konzoli unutar callback funkcije:

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

Naš kod će prvo ispisati '2', zatim '3', '4' i '5'. To znači da u promenljivu match redom ulaze oni stringovi koje je regularni izraz pronašao.

Hajde da rešimo zadatak do kraja - podići ćemo match na kvadrat i vratiti ga pomoću return. Ispostavlja se da će se za pronađenu dvojku vratiti 4 i dvojka će se zameniti tom četvorkom, za pronađenu trojku vratiće se 9 i trojka će se zameniti tom devetkom - i tako dalje:

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

Primer

Neka sada u stringu postoje konstrukcije oblika '2+3=':

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

Učinimo da se posle znaka jednakosti ubace zbir odgovarajućih brojeva. To jest, naš string treba da se pretvori u sledeći:

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

Da bismo rešili zadatak, hajde ponovo da eksperimentišemo - razdvojimo prvi i drugi sabirak u posebne grupe (capturing groups):

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

A sada konačno rešimo zadatak: za svaki pronađeni podstring saberimo prvu i drugu grupu, uzmimo nultu grupu (pronađeni string, na primer '2+3='), dodajmo mu rezultat i vratimo sve ovo preko return:

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

Praktični zadaci

Dat je string:

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

Pronađite brojeve koji stoje u zagradama i povećajte ih dva puta. To jest, iz našeg stringa treba da se dobije sledeći:

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

Dat je string:

let str = '123 456 789';

Pronađite sve brojeve i obrnite im cifre u obrnutom redosledu. To jest, iz našeg stringa treba da se dobije sledeći:

'321 654 987'

Dat je string sa datumima:

let str = '31.12.2025 30.11.2024 29.10.2023';

Pronađite sve datume i transformišite ih u drugi format tako da se dobije sledeći string:

'2025-12-31 2024-11-30 2023-10-29'
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij