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:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Natijada bizning karmanlarimizda quyidagilar bo‘ladi:
console.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:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Natijada birinchi karmanda bizning raqamimiz bo‘ladi:
console.log(res[1]); // '123' chiqadi