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:

javascriptlet str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);

Hasilnya, dalam kumpulan tangkapan kita akan terdapat yang berikut:

javascriptconsole.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:

javascriptlet str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);

Hasilnya, dalam kumpulan tangkapan pertama akan terdapat nombor kita:

javascriptconsole.log(res[1]); // akan memaparkan '123'