Nima uchun bu javascript regex 2 ketma-ket belgiga mos kelmasligi uchun ishlamaydi?

From the Mozilla documentation

x{n,}   

Where n is a positive integer. Matches at least n 
occurrences of the preceding item x.

For example, /a{2,}/ doesn't match the "a" in "cvay", 
but matches all of the a's in "cavay" va in "caaaaaavay".

va

(x)     

Matches x va remembers the match. These are called capturing groups.

Ushbu 2 ta ma'lumotlarga asoslanib, men quyidagilarni oldim

elmt1 = 'aba'
elmt1.match(/(.){2,}/g)

would normally return null because I enclosed the character before va asked for it to return at least 2 occurrences of it.

va I assume that

elmt1 = 'aab'
elmt1.match(/(.){2,}/g)

would normally return 'aa'

Ammo, bu usul hamma narsani qaytaradi, butun mag'lubiyat, har doim. Men bunga qarama-qarshiman. Menimcha, bu hujjatlarda yozilgan narsalarga zid keladi.

Kimdir menga bu regex nima uchun hamma narsani qaytarib berishi mumkin?

Rahmat, har kim!

0
Yo'q, 'aba.match (/ (.) \ 1 +/g) null qaytariladi. {2,} bu erda (.) {2,} ga o'xshash tarzda ishlaydi, ya'ni har qanday birikma bilan mos keladi chiziqli uzatish charslaridan boshqa 2 yoki undan ortiq belgining mag'lubiyatga egaligi.
qo'shib qo'ydi muallif Wiktor Stribi?ew, manba

6 javoblar

(.) kutilganidek birinchi belgini eslab qolish uchun va (.) {2,} kutilgandek, bu belgining kamida 2 marta paydo bo'lishini kutmoqdasiz. qanday ishlaydi. (.) mos keladigan belgini eslab qoladi va uni saqlash uchun \ 1 (yoki \ 2 kodi> yoki \ 3 ... siz istagan guruhga qarab).

Bundan tashqari, siz tutib turgan guruhga niyatifni qo'llashingiz kerak emas, chunki uning sababi deyarli har doim kerakli xatti-harakatlar emas (guruh barcha belgilarga mos keladigan, ammo faqat eslab qolgan).

Bu holda siz istagan narsa (.) \ 1 + degan ma'noni anglatadi: ya'ni bir yoki bir nechta marta bir xil belgi bilan ta'qib qilingan istalgan belgi bilan mos kelish.

2
qo'shib qo'ydi

(.) kutilganidek birinchi belgini eslab qolish uchun va (.) {2,} kutilgandek, bu belgining kamida 2 marta paydo bo'lishini kutmoqdasiz. qanday ishlaydi. (.) mos keladigan belgini eslab qoladi va uni saqlash uchun \ 1 (yoki \ 2 kodi> yoki \ 3 ... siz istagan guruhga qarab).

Bundan tashqari, siz tutib turgan guruhga niyatifni qo'llashingiz kerak emas, chunki uning sababi deyarli har doim kerakli xatti-harakatlar emas (guruh barcha belgilarga mos keladigan, ammo faqat eslab qolgan).

Bu holda siz istagan narsa (.) \ 1 + degan ma'noni anglatadi: ya'ni bir yoki bir nechta marta bir xil belgi bilan ta'qib qilingan istalgan belgi bilan mos kelish.

2
qo'shib qo'ydi

Kvalifikator guruh mazmunini regex sifatida emas, balki mos kelmaydi. a ni . bilan mos kelganligi uchun a ni olishingiz mumkin emas. Siz ikki yoki undan ortiq narsani olishingiz mumkin . , bu ikki yoki undan ortiq narsani bildiradi.

Bu \ 1 ga o'xshash ketma-ketlikdan farq qiladi, bu esa qaysi guruhga mos kelganini bildiradi.

1
qo'shib qo'ydi

Kvalifikator guruh mazmunini regex sifatida emas, balki mos kelmaydi. a ni . bilan mos kelganligi uchun a ni olishingiz mumkin emas. Siz ikki yoki undan ortiq narsani olishingiz mumkin . , bu ikki yoki undan ortiq narsani bildiradi.

Bu \ 1 ga o'xshash ketma-ketlikdan farq qiladi, bu esa qaysi guruhga mos kelganini bildiradi.

1
qo'shib qo'ydi

/.{2,}/ is equivalent to /..|...|....|.....|…/. Thus you regex will match anything, but single letters (or the empty string).

1
qo'shib qo'ydi

/.{2,}/ is equivalent to /..|...|....|.....|…/. Thus you regex will match anything, but single letters (or the empty string).

1
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb