Eksekusi RegExp dengan Fungsi exec(), Biar Lebih Dinamis!

Eksekusi RegExp dengan Fungsi exec(), Biar Lebih Dinamis!
Photo by Mitchell Luo / Unsplash

Kalau kamu sering ngoding JavaScript dan main-main sama Regular Expression (RegExp), pasti udah familiar dengan metode test(). Tapi, ada satu metode lain yang lebih powerful buat ngolah teks dengan pola tertentu, yaitu exec().

Beda dari test() yang cuma balikin true atau false, exec() bisa ngasih hasil lebih lengkap! Yuk, kita bahas!

Apa Itu RegExp.exec()?

exec() adalah metode dari Regular Expression (RegExp) di JavaScript yang mencari pola dalam string dan mengembalikan hasil pencarian dalam bentuk array.

Kalau pola cocok, exec() bakal balikin array yang berisi:
✔ Hasil pencarian yang cocok
✔ Index tempat hasil ditemukan
✔ String yang dicek

Kalau pola nggak cocok, exec() bakal balikin null.

Sintaks exec()

let hasil = regex.exec(teks);
  • regex → Pola Regular Expression yang mau dicari
  • teks → String yang mau dicek

Perbedaan exec() vs test()

Mungkin kamu bertanya, "Bedanya sama test() apa?"

  • test() ➝ Cuma ngecek ada atau nggak pola dalam teks (hasilnya true/false)
  • exec() ➝ Kasih info lengkap tentang pencarian (hasil dalam bentuk array)

Contoh:

let regex = /JavaScript/;
let teks = "Saya suka JavaScript!";

console.log(regex.test(teks)); // Output: true
console.log(regex.exec(teks)); 
// Output: [ 'JavaScript', index: 10, input: 'Saya suka JavaScript!', groups: undefined ]

👉 exec() kasih info posisi kata "JavaScript" ditemukan (index 10), sedangkan test() cuma bilang true.

Contoh Penggunaan exec()

1. Menemukan Kata dalam String

Kita coba cari kata "coding" di dalam teks:

let regex = /coding/;
let teks = "Aku lagi belajar coding di JavaScript!";

let hasil = regex.exec(teks);
console.log(hasil);

Output:

[ 'coding', index: 16, input: 'Aku lagi belajar coding di JavaScript!', groups: undefined ]

"coding" ditemukan
Posisi index: 16
String yang dicek: "Aku lagi belajar coding di JavaScript!"

Kalau kata yang dicari nggak ada, hasilnya null:

let regex = /Python/;
console.log(regex.exec(teks)); // Output: null

2. Menggunakan Grouping (() dalam Regex)

Salah satu fitur keren exec() adalah bisa menangkap bagian tertentu dari pola pakai grouping (() dalam regex).

Misalnya, kita mau ambil username dan domain dari email:

let regex = /(\w+)@(\w+)\.(\w+)/;
let email = "[email protected]";

let hasil = regex.exec(email);
console.log(hasil);

Output:

[
  '[email protected]',
  'contact',  // Group 1: Username
  'email',    // Group 2: Domain
  'com',      // Group 3: Ekstensi
  index: 0,
  input: '[email protected]',
  groups: undefined
]

hasil[1]Username: contact
hasil[2]Domain: email
hasil[3]Ekstensi: com

Keren, kan? Kita bisa ambil data spesifik langsung dari string!

3. Menangkap Semua Angka dalam String

Misalkan kita punya teks dengan banyak angka:

let regex = /\d+/g; // \d+ buat cari angka
let teks = "Hari ini tanggal 25, bulan 3, tahun 2024";

let hasil;
while ((hasil = regex.exec(teks)) !== null) {
  console.log(`Ditemukan angka: ${hasil[0]} di index ${hasil.index}`);
}

Output:

Ditemukan angka: 25 di index 15
Ditemukan angka: 3 di index 25
Ditemukan angka: 2024 di index 33

📌 Kenapa pakai while?
Karena exec() bisa dipanggil berulang kali buat nyari semua angka dalam teks! Tanpa while, dia cuma nemu angka pertama doang.

Kapan Harus Pakai exec()?

Gunakan exec() kalau kamu butuh:
Hasil pencarian yang lebih detail (index, teks yang cocok, dll.)
Menangkap bagian tertentu dari teks pakai grouping ()
Menemukan semua kecocokan dalam string, bukan cuma true/false

Kalau cuma mau cek ada/tidak, cukup pakai test().

Kesimpulan

Fungsi exec() di JavaScript bikin pencarian teks lebih fleksibel dan dinamis. Dengan exec(), kamu bisa:
Cari pola dalam string dan dapetin detailnya
Gunakan grouping buat ambil bagian teks tertentu
Looping hasil buat dapetin semua kecocokan

Kalau butuh lebih dari sekadar true/false, exec() adalah pilihan terbaik!

Sekarang coba langsung di kode kamu! Selamat ngoding!