JavaScript RegExlarida to‘plamlar ichidagi defis
Defis - [ ] ichida maxsus belgidir
(lekin tashqarida - emas). Agar sizga defis o'zi kerak bo'lsa - uni guruh ajratgichi sifatida qabul qilinmaydigan joyga qo'ying.
Nima uchun bu muhim: siz o'zingiz sezmagan holda belgilar guruhini yaratishingiz mumkin. Masalan, '[:-@]' - siz ikki nuqta, defis va @ belgisini tanlayotganingizni o'ylaysiz, lekin aslida : va @ orasidagi belgilar guruhi hosil bo'ladi. Bu guruhga quyidagi belgilar kiradi: ? < = > : ;
Ular qaerdan keladi? ASCII jadvalidan - ikki nuqta @ belgisidan kichik raqamga ega - va guruh hosil bo'ladi. Ya'ni barcha guruhlar ASCII jadvali asosida hosil bo'ladi (istak bo'lsa, bundan foydalanish mumkin).
Bunga qanday yechim topish kerak: defis belgisini guruh belgisi sifatida qabul qilinmasligi aniq bo'lgan joyga, masalan, boshida yoki oxirida
(ya'ni [dan keyin yoki ]dan oldin) qo'ying.
Shuningdek, defisni ekranlash mumkin - bu holda
u qayerda turishidan qat'iy nazar o'zini anglatadi.
Masalan, [:-@] o'rniga [:\-@] yozing
- va endi guruh bo'lmaydi, balki uchta belgi - ikki nuqta, defis va @ belgisi @ bo'ladi.
Misol
Quyidagi misolda qidirish shabloni quyidagicha:
1 raqami, keyin 'a' dan
'z' gacha harf, keyin 2 raqami:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! 1-2 ! !'
Misol
Keling endi defisni ekranlaymiz. Natijada
qidirish shabloni quyidagicha: 1 raqami, keyin
'a' harfi, yoki defis, yoki 'z' harfi,
keyin 2 raqami:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! ! 1c2 !'
Misol
Uni ekranlamasdan, shunchaki defisni o'rnini almashtirish mumkin:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! ! 1c2 !'
Misol
Quyidagi misolda qidirish shabloni quyidagicha:
birinchi belgi - kichik harflar yoki
defis '-', keyin ikkita 'x' harfi:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! Axx ! @xx'
Misol
Quyidagi misolda qidirish shabloni quyidagicha:
birinchi belgi - kichik, katta
harflar yoki defis '-', keyin ikkita
'x' harfi:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! ! ! @xx'
Misol
Defisni ikkita guruh orasiga joylashtirish mumkin - u erda u yana bir guruh hosil qilmaydi:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Natijada o'zgaruvchiga quyidagi yoziladi:
'! ! ! @xx'
Amaliy vazifalar
Berilgan satr:
let str = 'xaz xBz xcz x-z x@z';
Quyidagi shablonga mos keladigan barcha satrlarni toping:
'x' harfi, katta yoki kichik
harf yoki defis, 'z' harfi.
Berilgan satr:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Quyidagi shablonga mos keladigan barcha satrlarni toping:
'x' harfi, keyin dollar, yoki
defis yoki ortiqcha belgi, keyin 'z' harfi.