JavaScript `String.matchAll()`: Ambil Semua Match Sekaligus
1
min read .
Updated on
Kadang saya harus nge-parse string yang kompleks dan butuh semua match, termasuk grup tangkapan. Sebelumnya pakai match()
cuma dapat sebagian info. Untungnya, ada String.matchAll()
: mengembalikan iterator semua match lengkap dengan detail grupnya.
Apa Itu String.matchAll()
?
- Mengembalikan iterator semua hasil match regex di string.
- Bisa akses capturing groups, index, dan detail match lainnya.
- Hanya pakai regex dengan flag
g
.
string.matchAll(regex);
Contoh Penggunaan
1. Basic Usage
const text = "The quick brown fox";
const regex = /(\w+)\s/g;
for (const match of text.matchAll(regex)) {
console.log(match);
}
2. Ambil Grup Tertentu
const text = "Order #123, Order #456, Order #789";
const regex = /Order #(\d+)/g;
for (const match of text.matchAll(regex)) {
console.log(`Found order number: ${match[1]}`);
}
3. Convert Iterator ke Array
const text = "cat bat mat";
const regex = /\b(\w+)at\b/g;
const matchesArray = [...text.matchAll(regex)];
console.log(matchesArray);
4. Named Capturing Groups
const text = "John: 123, Jane: 456";
const regex = /(?<name>\w+): (?<number>\d+)/g;
for (const match of text.matchAll(regex)) {
console.log(`Name: ${match.groups.name}, Number: ${match.groups.number}`);
}
Bedanya dengan String.match()
match()
→ Array sederhana, tanpa detail capturing group.matchAll()
→ Iterator lengkap, tiap match punya grup, index, dan info lengkap.
Kesimpulan
Gini deh, kalau kamu butuh semua match dengan info lengkap, matchAll()
itu lifesaver. Pada akhirnya, parsing string kompleks jadi lebih gampang, rapi, dan bisa langsung dipakai buat analisis atau manipulasi data.