⊗jsSpRERMC 127 of 294 menu

Callback metode replace regulārajās izteiksmēs JavaScript

Replace metode kā otro parametru var pieņemt ne tikai virkni, bet arī callback funkciju, kas tiks piemērota katram atrastajam atbilstības gadījumam. Katra apakšvirkne, ko atrod regulārā izteiksme, tiks aizstāta ar to, ko šī funkcija atgriezīs tieši šai apakšvirknei.

Šai funkcijai var nodot parametrus: pirmajā parametrā tiks ievietota atrastā virkne, otrajā parametrā - pirmā atbilstības grupa, trešajā parametrā - otrā atbilstības grupa un tā tālāk - var izveidot tik parametrus, cik atbilstības grupu ir regulārajā izteiksmē.

Priekšpēdējā parametrā tiks ievietota pozīcija atrastās atbilstības, bet pēdējā - visa virkne, pa kuru tiek veikta meklēšana.

Kā tas viss strādā - izpētīsim ar praktiskiem piemēriem.

Piemērs

Ir dota virkne ar skaitļiem:

let str = '2 3 4 5';

Aizstāsim šos skaitļus ar to kvadrātiem. Vispirms vienkārši izvadīsim mūsu skaitļus pēc kārtas konsolē callback funkcijā:

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

Mūsu kods vispirms izvadīs '2', tad '3', '4' un '5'. Tas nozīmē, ka mainīgajā match pēc kārtas nonāk tās virknes, kuras atrada regulārā izteiksme.

Atrisināsim uzdevumu līdz galam - kāpināsim match kvadrātā un atgriezīsim to ar return. Izrādīsies, ka atrastajam divniekam atgriezīsies 4 un divnieks tiks aizstāts ar šo četrinieku, atrastajam trīsniekam atgriezīsies 9 un trīsnieks tiks aizstāts ar šo devītnieku - un tā tālāk:

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

Piemērs

Tagad virknē ir dotas konstrukcijas šādā formā '2+3=':

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

Izdarīsim tā, lai aiz vienādības zīmes ievietotos atbilstošo skaitļu summas. Tas nozīmē, ka mūsu virknei jāpārvēršas sekojošā:

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

Lai atrisinātu uzdevumu, vēlreiz eksperimentēsim - sadalīsim pirmo un otro saskaitāmo atsevišķās atbilstības grupās:

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

Un tagad galīgi atrisināsim uzdevumu: katrai atrastajai apakšvirknei saskaitīsim pirmo un otro atbilstības grupu, paņemsim nulles grupu (atrasto virkni, piemēram '2+3='), pievienosim to rezultātam un atgriezīsim to visu caur return:

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

Praktiskie uzdevumi

Ir dota virkne:

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

Atrodiet skaitļus, kas atrodas iekavās, un palieliniet tos divas reizes. Tas nozīmē, ka no mūsu virknes vajadzētu izveidoties sekojošai:

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

Ir dota virkne:

let str = '123 456 789';

Atrodiet visus skaitļus un apgrieziet to ciparus apgrieztā secībā. Tas nozīmē, ka no mūsu virknes vajadzētu izveidoties sekojošai:

'321 654 987'

Ir dota virkne ar datumiem:

let str = '31.12.2025 30.11.2024 29.10.2023';

Atrodiet visus datumus un pārveidojiet tos citā formātā tā, lai izveidotos sekojoša virkne:

'2025-12-31 2024-11-30 2023-10-29'
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt