JavaScript regulýar ifadelerinde replace metodunda callback
Replace metodu ikinji parametr hökmünde diňe setir däl, eýsem funksiýa-callback hem kabul edip biler, ol her tapylan gabat gelşe üçin ulanylýar. Regulýar ifadeniň tapýan her setir şol setir üçin funksiýanyň yzyna gaýtaran zady bilen çalşylar.
Bu funksiýa parametrler geçirip bolýar: birinji parametre tapylan setir ýerleşdiriler, ikinji parametre birinji gap, üçünji parametre ikinji gap we ş.m. - regulýar ifadäniň gap sany nýetýänçä parametrler ýasap bolýar.
Ikinjiden soňky parametre tapylan gabat gelşäniň pozisiýasy, soňky parametrede bolsa gözleg geçirilýän tutuş setir ýerleşdiriler.
Bütin bu işiň nähili işleýändigini amaly mysallar bilen düşünip alarys.
Mysal
Sanlar bilen setir berlen bolsun:
let str = '2 3 4 5';
Bu sanlary olaryň kwadratlary bilen çalşalyň. Ilki bilen, funksiýa-callback içinde sanlarymyzy yzygiderlikde konsola çykaralyň:
str.replace(/\d+/g, function(match) {
console.log(match);
});
Biziň kodymyz ilki '2', soňra
'3', '4' we '5'
çykarar. Ýagny match üýtgeýjisine
yzygiderlikde regulýar ifadeniň tapýan setirleri düşýär.
Meselemi iň soňuna çenli çözeliň -
match-i kwadrata göterip we
return bilen yzyna gaýtaryň.
Şeýlelikde, tapylan iki üçin 4
gaýtarylýar we iki şol dört bilen çalşylýar,
tapylan üç üçin 9 gaýtarylýar we üç
şol dokuz bilen çalşylýar - we ş.m.:
let result = str.replace(/\d+/g, function (match) {
return match**2;
});
console.log(result); // '4 9 16 25' çykarar
Mysal
Indi setirde '2+3=' görnüşindäki
gurluşlar berlen bolsun:
let str = '2+3= 4+5= 6+7=';
Barabar belgisinden soň degişli sanlaryň jemi goýulşy ýaly edeliň. Ýagny biziň setirimiz aşakdaky setire öwrülmeli:
'2+3=5 4+5=9 6+7=13'
Meselemi çözmek üçin ýene synag edeliň - birinji we ikinji goşulyjylary aýratyn gaplara bölüň:
str.replace(/(\d+)\+(\d+)=/g, function (match0, match1, match2) {
console.log(match0, match1, match2);
});
Indi meselemi iň soňuna çenli çözeliň: her
bir tapylan setir üçin birinji we ikinji
gaplary jemläp, nol gapy (tapylan setiri,
mysal üçin '2+3=') alarys, oňa
netijäni goşarys we hemmesini
return bilen yzyna gaýtararys:
let result = str.replace(/(\d+)\+(\d+)=/g, function(match0, match1, match2) {
let sum = Number(match1) + Number(match2);
return match0 + sum;
});
console.log(result);
Amaly meseleler
Setir berlen:
let str = 'aaa [2] bbb [3] ccc [12] ddd';
Ýaýlaryň içinde durýan sanlary tapyň we olary iki esse köpeldiň. Ýagny biziň setirimizden aşakdaky setir alynmaly:
'aaa [4] bbb [6] ccc [24] ddd'
Setir berlen:
let str = '123 456 789';
Hemme sanlary tapyň we olaryň sanlaryny tersine tertipde öwüriň. Ýagny biziň setirimizden aşakdaky setir alynmaly:
'321 654 987'
Sene bilen setir berlen:
let str = '31.12.2025 30.11.2024 29.10.2023';
Hemme seneleri tapyň we olary beýleki formatda üýtgediň, aşakdaky setir alnsyn:
'2025-12-31 2024-11-30 2023-10-29'