Materi
Grup bernama ditulis (?<nama>...). Hasilnya sama dengan grup biasa, tetapi bagian yang tertangkap bisa dibaca dengan namanya lewat String.prototype.match, sehingga kode yang memakainya lebih mudah dibaca.
const m = "INV-2026-0001".match(/^INV-(?<tahun>\d{4})-(?<urutan>\d{4})$/);
console.log(m.groups.tahun); // "2026"
console.log(m.groups.urutan); // "0001"Tangkapan yang sama dipakai String.prototype.replace lewat $1, $2, dan seterusnya: $1 berarti isi grup pertama, dihitung dari kurung pembuka paling kiri. Untuk grup bernama, penulisannya $<nama>. Cara ini menukar urutan bagian teks tanpa memotong string satu per satu dengan slice.
const tgl = "22/09/2026".replace(/(\d{2})\/(\d{2})\/(\d{4})/, "$3-$2-$1");
console.log(tgl); // "2026-09-22"
console.log("Bogor, Depok, Bekasi".split(/\s*,\s*/)); // ["Bogor", "Depok", "Bekasi"]Tanpa flag, replace hanya mengganti kecocokan pertama. Flag g membuatnya mengganti semua kecocokan: mengganti tanda hubung pada a-b-c dengan spasi menghasilkan a b c bila flag g dipasang, dan a b-c bila tidak. String.prototype.replaceAll menolak pola tanpa flag g dengan pesan TypeError: replaceAll must be called with a global RegExp.
Latihan di kelas ini hanya menilai cocok atau tidak cocok. Nama grup tidak memengaruhi hasil itu; namanya baru terpakai ketika pola dipakai di kode untuk mengambil bagian teks.
Aturan format di latihan ini
- Nomor HP: diawali 08, lalu 8 sampai 11 digit, tanpa spasi atau tanda hubung.
- Kode invoice: INV, tanda hubung, tahun 4 digit, tanda hubung, nomor urut 4 digit.
- Daftar kota dalam satu sel: dipisah titik koma atau koma, dengan spasi yang tidak seragam.
Aturan di atas adalah aturan formulir latihan Toko Nusantara, bukan aturan resmi operator seluler atau sistem perpajakan.