⊗jsSpRERMC 127 of 294 menu

JavaScript'te Düzenli İfadelerde replace Metodunda Geri Çağrı (Callback)

Replace metodu, ikinci parametre olarak sadece bir string değil, aynı zamanda bir geri çağrı fonksiyonu da alabilir. Bu fonksiyon, bulunan her eşleşme için uygulanacaktır. Düzenli ifadenin bulduğu her alt string, bu fonksiyonun o belirli alt string için döndürdüğü şeyle değiştirilecektir.

Bu fonksiyona parametreler aktarılabilir: ilk parametreye bulunan string, ikinci parametreye ilk yakalama grubu (capturing group), üçüncü parametreye ikinci yakalama grubu yerleştirilir ve bu böyle devam eder - düzenli ifadede kaç tane yakalama grubu varsa o kadar parametre yapılabilir.

Sonuncudan bir önceki parametreye, bulunan eşleşmenin konumu yerleştirilir ve son parametreye ise arama yapılan tüm string yerleştirilir.

Tüm bunların nasıl çalıştığını pratik örneklerle inceleyeceğiz.

Örnek

Sayılardan oluşan bir string verilsin:

let str = '2 3 4 5';

Bu sayıları kareleriyle değiştirelim. İlk olarak, geri çağrı fonksiyonunda sayılarımızı sırayla konsola yazdıralım:

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

Kodumuz önce '2', sonra '3', '4' ve '5' yazdıracaktır. Yani match değişkenine sırayla düzenli ifadenin bulduğu string'ler gelir.

Şimdi görevi sonuna kadar çözelim - match'in karesini alalım ve return ile döndürelim. Bulunan 2 için 4 dönecek ve iki bu dördün yerine geçecek, bulunan üç için 9 dönecek ve üç bu dokuzun yerine geçecek - ve bu böyle devam edecek:

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

Örnek

Şimdi string'de '2+3=' şeklinde yapılar verilsin:

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

Eşittir işaretinden sonra ilgili sayıların toplamlarının gelmesini sağlayalım. Yani string'imiz şu hale dönüşmeli:

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

Görevi çözmek için yine deney yapalım - birinci ve ikinci terimleri ayrı yakalama gruplarına ayıralım:

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

Şimdi görevi nihai olarak çözelim: Her bulunan alt string için birinci ve ikinci yakalama gruplarını toplayalım, sıfırıncı yakalama grubunu (bulunan string, örneğin '2+3=') alalım, ona toplamın sonucunu ekleyelim ve tümünü return ile döndürelim:

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

Pratik Görevler

Bir string verilsin:

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

Köşeli parantezler içindeki sayıları bulun ve iki katına çıkarın. Yani string'imizden şu string elde edilmeli:

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

Bir string verilsin:

let str = '123 456 789';

Tüm sayıları bulun ve rakamlarını ters çevirin. Yani string'imizden şu string elde edilmeli:

'321 654 987'

Tarihlerden oluşan bir string verilsin:

let str = '31.12.2025 30.11.2024 29.10.2023';

Tüm tarihleri bulun ve başka bir formata dönüştürerek aşağıdaki string'i elde edin:

'2025-12-31 2024-11-30 2023-10-29'
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet