← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 30

RegExp lanjutan

Named group, lookbehind, replace dengan fungsi.

Pahami konsepnya

Named group (?<nama>...) memberi nama pada grup penangkap: /(?<tahun>d{4})-(?<bulan>d{2})/ lalu hasil.groups.tahun. Ini jauh lebih terbaca daripada indeks [1], [2].

Lookahead (?=...) dan negative lookahead (?!...) memeriksa tanpa mengkonsumsi: /d+(?=rp)/ angka diikuti "rp" tanpa mengambil "rp". Lookbehind (?<=...) dan (?<!...) memeriksa sebelum posisi saat ini.

replace dengan fungsi: teks.replace(/(w+)/g, (match, kata) => kata.toUpperCase()) — fungsi menerima tiap kecocokan dan mengembalikan penggantinya. Ini lebih fleksibel dari string pengganti statis.

Coba contoh kode

// named group
const tanggal = "2026-10-10";
const m = tanggal.match(/(?<tahun>d{4})-(?<bulan>d{2})-(?<hari>d{2})/);
console.log(m.groups.tahun, m.groups.bulan);  // 2026 10

// replace dengan fungsi
const teks = "halo dunia belajar javascript";
const kapital = teks.replace(/w+/g, kata =>
  kata[0].toUpperCase() + kata.slice(1)
);
console.log(kapital);  // Halo Dunia Belajar Javascript

// lookbehind
console.log("Rp1000 Rp2000".match(/(?<=Rp)d+/g));  // ["1000","2000"]

Named group mengakses bagian pola lewat nama (m.groups.tahun). Replace dengan fungsi mengubah tiap kata menjadi kapital awal. Lookbehind mengambil angka SETELAH "Rp" tanpa menyertakan "Rp".

Latihan singkat

Uji: "Rp15000".match(/(?<=Rp)d+/) — harus `15000`.