⊗jsSpRERMC 127 of 294 menu

Callback në metodën replace në regex JavaScript

Metoda replace si parametër i dytë mund të marrë jo vetëm një varg, por edhe një funksion callback, i cili do të aplikohet për çdo përputhje të gjetur. Çdo nënvarg, i cili gjendet nga regex, do të zëvendësohet me atë që kthen ky funksion pikërisht për atë nënvarg.

Në këtë funksion mund të kaloni parametra: në parametrin e parë do të vendoset vargu i gjetur, në parametrin e dytë - grupi i parë i kapjes (capturing group), në parametrin e tretë - grupi i dytë i kapjes dhe kështu me radhë - mund të bëni sa parametra, sa grupe kapjese ka në shprehjen e rregullt.

Në parametrin e parafundit do të vendoset pozita e përputhjes së gjetur, dhe në atë të fundit - i gjithë vargu, mbi të cilin bëhet kërkimi.

Si funksionon e gjithë kjo - do ta shohim në shembuj praktikë.

Shembull

Le të themi se kemi një varg me numra:

let str = '2 3 4 5';

Le t'i zëvendësojmë këta numra me katrorët e tyre. Për fill, le t'i shfaqim numrat tanë njëri pas tjetrit në konsolë në funksionin callback:

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

Kodi ynë së pari do të shfaqë '2', pastaj '3', '4' dhe '5'. Kjo do të thotë që në ndryshoren match hyjnë në mënyrë të njëpasnjëshme ato vargje, të cilat i gjen regex.

Le ta zgjidhim detyrën deri në fund - do ta ngremë match në katror dhe do ta kthejmë duke përdorur return. Do të ndodhë që për dyfishin e gjetur do të kthehet 4 dhe dyfishi do të zëvendësohet me këtë katër, për trefishin e gjetur do të kthehet 9 dhe trefishi do të zëvendësohet me këtë nëntë - dhe kështu me radhë:

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

Shembull

Le të themi se tani në varg janë dhënë konstruksione të formës '2+3=':

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

Le të bëjmë që pas të barabartët të futen shumat e numrave përkatës. Kjo do të thotë, vargu ynë duhet të kthehet në vijim:

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

Për të zgjidhur detyrën, le të eksperimentojmë përsëri - le t'i vendosim përbërësin e parë dhe të dytë në grupe të veçanta kapjese:

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

Dhe tani le ta zgjidhim detyrën përfundimisht: për çdo nënvarg të gjetur, le të mbledhim grupin e parë dhe të dytë të kapjes, të marrim grupin zero (vargun e gjetur, për shembull '2+3='), t'i shtojmë atij rezultatin dhe ta kthejmë të gjithë këtë përmes return:

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

Detyra praktike

Është dhënë vargu:

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

Gjeni numrat, që qëndrojnë në kllapa dhe rrisni ata dy herë. Kjo do të thotë, nga vargu ynë duhet të fitohet vargu vijues:

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

Është dhënë vargu:

let str = '123 456 789';

Gjeni të gjithë numrat dhe ktheni shifrat e tyre në rend të kundërt. Kjo do të thotë, nga vargu ynë duhet të fitohet vargu vijues:

'321 654 987'

Është dhënë një varg me data:

let str = '31.12.2025 30.11.2024 29.10.2023';

Gjeni të gjitha datat dhe shndërrojini ato në një format tjetër, në mënyrë që të fitohet vargu vijues:

'2025-12-31 2024-11-30 2023-10-29'
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo