⊗jsSpRERMC 127 of 294 menu

Колбек у методу replace у регуларкама JavaScript

Метод replace другим параметром може да прими не само стринг, већ и функцију-колбек, која ће се применити за сваки пронађени подударај. Сваки подстринг, који је нашла регуларка, замениће се тим што врати та функција управо за тај подстринг.

У ову функцију се могу проследити параметри: у први параметар ће се ставити пронађени стринг, у други параметар - први џеп, у трећи параметар - други џеп и тако даље - може се правити колико параметара, толико џепова у регуларном изразу.

У претпоследњи параметар ће се ставити позиција пронађеног подударања, а у последњи - цео стринг, по коме се врши претрага.

Како све ово функционише - размотрићемо на практичним примерима.

Пример

Нека је дат стринг са бројевима:

let str = '2 3 4 5';

Хајде да заменимо те бројеве њиховим квадратима. За почетак хајде да једноставно испишемо наше бројеве редом у конзолу у функцији-колбеку:

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

Наш код ће исписати прво '2', па '3', '4' и '5'. То јест у променљиву match узастопно улазе они стрингови које је нашла регуларка.

Хајде да решимо задатак до краја - да дижемо match на квадрат и да га вратимо помоћу return. Испашће да за пронађену двојку врати 4 и двојка ће се заменити том четворком, за пронађену тројку вратиће се 9 и тројка ће се заменити том деветком - и тако даље:

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

Пример

Нека сада у стрингу дате конструкције вида '2+3=':

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

Хајде да урадимо тако да после једнакостави убацимо збирове одговарајућих бројева. То јест наш стринг треба да се претвори у следећи:

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

За решавање задатка хајде опет да експериментишемо - да распоредимо први и други сабирак по одвојеним џеповима:

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

А сада да коначно решимо задатак: за сваки пронађени подстринг саберемо први и други џеп, узећемо нулти џеп (пронађени стринг, на пример '2+3='), додамо му резултат и вратимо све то преко return:

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

Практични задаци

Дат је стринг:

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

Пронађите бројеве, који стоје у заградама и увећајте их два пута. То јест из нашег стринга треба да добијемо следећи:

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

Дат је стринг:

let str = '123 456 789';

Пронађите све бројеве и окрените им цифре у обрнутом редоследу. То јест из нашег стринга треба да добијемо следећи:

'321 654 987'

Дат је стринг са датумима:

let str = '31.12.2025 30.11.2024 29.10.2023';

Пронађите све датуме и претворите их у други формат тако да добијемо следећи стринг:

'2025-12-31 2024-11-30 2023-10-29'
Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј