Kurungan Tidak Menangkap dalam Regex JavaScript
Kurungan ( ) melakukan dua fungsi -
pengelompokan aksara dan fungsi tangkapan (capturing group). Tetapi
bagaimana jika kita hanya perlu mengelompokkan,
tetapi tidak mahu menangkap ke dalam kumpulan?
Untuk menyelesaikan masalah ini, diciptakan
kurungan tidak menangkap (?: )
- ia mengelompokkan, tetapi tidak menangkap ke dalam kumpulan.
Contoh
Dalam contoh berikut, kurungan pertama kita perlukan untuk pengelompokan, dan kurungan kedua - untuk tangkapan. Walau bagaimanapun, kedua-dua kurungan tersebut menyimpan data ke dalam kumpulan tangkapan:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Hasilnya, dalam kumpulan tangkapan kita akan terdapat yang berikut:
console.log(res[0]); // akan memaparkan 'abab123'
console.log(res[1]); // akan memaparkan 'ab'
console.log(res[2]); // akan memaparkan '123'
Contoh
Mari kita ubah supaya pasangan kurungan pertama hanya mengelompokkan, tetapi tidak menangkap ke dalam kumpulan:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Hasilnya, dalam kumpulan tangkapan pertama akan terdapat nombor kita:
console.log(res[1]); // akan memaparkan '123'