JavaScript 正規表現 වල replace ක්රමයේ කොල්බැක්
replace ක්රමය දෙවන පරාමිතියක් ලෙස නිශ්චිත වචන මාලාවක් පමණක් නොව, කොල්බැක් ශ්රිතයක් ද පිළිගනී, එය සෑම සොයාගත් ගැලපීමක් සඳහාම යොදනු ලැබේ. නිත්ය ප්රකාශනය විසින් සොයාගත් එක් එක් උප වචන මාලාව, එම උප වචන මාලාව සඳහාම එම ශ්රිතය විසින් ආපසු ලබා දෙන දෙයින් ප්රතිස්ථාපනය වේ.
මෙම ශ්රිතයට පරාමිති සම්ප්රේෂණය කළ හැකිය: පළමු පරාමිතියට සොයාගත් වචන මාලාව යොමු වන අතර, දෙවන පරාමිතියට - පළමු කැබැල්ල (group), තෙවන පරාමිතියට - දෙවන කැබැල්ල සහ එසේම - ඔබට කළ හැක්කේ නිත්ය ප්රකාශනයේ ඇති කැබැලි ගණනට සමාන පරාමිති ගණනක්.
අවසානයට පෙර පරාමිතියට සොයාගත් ගැලපීමේ ස්ථානය යොමු වන අතර, අවසාන පරාමිතියට - සෙවුම සිදු කරන සම්පූර්ණ වචන මාලාව යොමු වේ.
මෙය සියල්ල ක්රියා කරන ආකාරය - ප්රායෝගික උදාහරණ මගින් විශ්ලේෂණය කරමු.
උදාහරණය
අංක සහිත වචන මාලාවක් ලබා දී ඇතැයි සිතමු:
let str = '2 3 4 5';
මෙම අංක ඒවායේ වර්ග මගින් ප්රතිස්ථාපනය කරමු. පළමුව අපි අපගේ අංක එකින් එක කොල්බැක් ශ්රිතය තුළ console එකට ප්රතිදානය කරමු:
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'
ගැටලුව විසඳීම සඳහා අපි නැවතත් අත්හදා බලමු - පළමු සහ දෙවන එකතු කරන ලද පද වෙන වෙනම කැබැලිවලට (groups) වෙන් කරමු:
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'