⊗jsSpRERMC 127 of 294 menu

Callback dalam Metode replace pada Regex JavaScript

Metode replace dapat menerima tidak hanya string sebagai parameter kedua, tetapi juga fungsi callback, yang akan diterapkan untuk setiap kecocokan yang ditemukan. Setiap substring yang ditemukan oleh regex akan diganti dengan apa yang dikembalikan oleh fungsi tersebut khusus untuk substring itu.

Parameter dapat diteruskan ke fungsi ini: parameter pertama akan berisi string yang ditemukan, parameter kedua - capture group pertama, parameter ketiga - capture group kedua dan seterusnya - Anda dapat membuat parameter sebanyak capture group dalam ekspresi reguler.

Parameter kedua dari belakang akan berisi posisi kecocokan yang ditemukan, dan parameter terakhir - seluruh string tempat pencarian dilakukan.

Bagaimana semua ini bekerja - akan kita bahas dengan contoh-contoh praktis.

Contoh

Misalkan diberikan string dengan angka:

let str = '2 3 4 5';

Mari kita ganti angka-angka ini dengan kuadratnya. Pertama-tama, mari kita tampilkan angka-angka kita secara berurutan di konsol dalam fungsi callback:

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

Kode kita akan menampilkan '2' terlebih dahulu, lalu '3', '4' dan '5'. Artinya, ke dalam variabel match secara berurutan masuk string-string yang ditemukan oleh regex.

Mari kita selesaikan tugasnya - kita akan memangkatkan match menjadi kuadrat dan mengembalikannya menggunakan return. Hasilnya, untuk angka dua yang ditemukan akan dikembalikan 4 dan angka dua akan diganti menjadi empat ini, untuk angka tiga yang ditemukan akan dikembalikan 9 dan angka tiga akan diganti menjadi sembilan ini - dan seterusnya:

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

Contoh

Sekarang misalkan dalam string diberikan konstruksi berbentuk '2+3=':

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

Mari kita buat agar setelah tanda sama dengan disisipkan jumlah dari angka-angka yang sesuai. Artinya, string kita harus berubah menjadi berikut:

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

Untuk menyelesaikan tugas, mari kita bereksperimen lagi - letakkan suku pertama dan kedua ke dalam capture group terpisah:

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

Dan sekarang mari kita selesaikan tugasnya: untuk setiap substring yang ditemukan, jumlahkan capture group pertama dan kedua, ambil capture group nol (string yang ditemukan, misalnya '2+3='), tambahkan hasilnya dan kembalikan semua ini melalui return:

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

Tugas Praktis

Diberikan string:

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

Temukan angka yang berada dalam tanda kurung dan tingkatkan dua kali lipat. Artinya dari string kita harus menjadi seperti berikut:

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

Diberikan string:

let str = '123 456 789';

Temukan semua angka dan balikkan digitnya dalam urutan terbalik. Artinya dari string kita harus menjadi seperti berikut:

'321 654 987'

Diberikan string dengan tanggal:

let str = '31.12.2025 30.11.2024 29.10.2023';

Temukan semua tanggal dan ubah formatnya sehingga menjadi string berikut:

'2025-12-31 2024-11-30 2023-10-29'
Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak