⊗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'
essvbyuzen