⊗jsSpRERMC 127 of 294 menu

JavaScript регулардык ifадаларында replace методунун коллбэги

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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу