Tanda Kurung Non-Penangkap dalam Regex JavaScript
Tanda kurung ( ) memiliki dua fungsi -
pengelompokan karakter dan fungsi tangkapan (capturing group). Lalu
bagaimana jika kita perlu mengelompokkan,
tapi tidak ingin menangkapnya?
Untuk mengatasi masalah ini, diciptakan
tanda kurung non-penangkap (?: )
- mereka mengelompokkan, tetapi tidak memasukkan ke dalam grup tangkapan.
Contoh
Dalam contoh berikut, tanda kurung pertama kita butuhkan untuk pengelompokan, dan yang kedua - untuk grup tangkapan. Namun, kedua tanda kurung tersebut menyimpan data ke dalam grup tangkapan:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Hasilnya, di dalam grup tangkapan kita akan berisi berikut ini:
console.log(res[0]); // akan menampilkan 'abab123'
console.log(res[1]); // akan menampilkan 'ab'
console.log(res[2]); // akan menampilkan '123'
Contoh
Mari kita ubah agar pasangan tanda kurung pertama hanya mengelompokkan, tetapi tidak memasukkan ke dalam grup tangkapan:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Hasilnya, di grup tangkapan pertama akan berisi angka kita:
console.log(res[1]); // akan menampilkan '123'