JavaScript regular ifodalarda saqlanmaydigan qavslar

Qavslar ( ) ikkita funktsiyani bajaradi - belgilarni guruhlash va "karman" funktsiyasi. Ammo agar biz guruhlashimiz kerak, lekin karmanga solmasak-chi? Bunday muammoni hal qilish uchun maxsus saqlanmaydigan qavslar (?: ) yaratilgan - ular guruhlaydi, lekin karmanga joylamaydi.

Misol

Quyidagi misolda birinchi qavslar bizga guruhlash uchun kerak, ikkinchilari esa karman uchun. Biroq, ikkala qavs ham ma'lumotlarni karmanga saqlaydi:

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

Natijada bizning karmanlarimizda quyidagilar bo‘ladi:

javascriptconsole.log(res[0]); // 'abab123' chiqadi
console.log(res[1]); // 'ab' chiqadi
console.log(res[2]); // '123' chiqadi

Misol

Keling, birinchi qavslar faqat guruhlash uchun ishlatiladi, lekin karmanga solinmasin qilaylik:

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

Natijada birinchi karmanda bizning raqamimiz bo‘ladi:

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