⊗jsSpREGL 101 of 294 menu

JavaScript-da regulýar ifadelerde açgözçiligi çäklendirmek

Regulýar ifadeler, deslapky ýagdaýynda açgöz bolýar. Bu onuň ýönekeý aýdylanda, iň köp mümkin bolan nyşanlary gapdarýandygyny aňladýar. Geliň bir mysal bilen düşüneliň. Bizde şeýle bir setir bolsun:

let str = 'aeeex zzz x kkk';

Biz bu setirde 'aeeex' setir bölegini şu şablona görä tapmak isleýäris: 'a' harpydan 'a', soňra islendik nyşan bir ýa-da birnäçe gezek, soňra bolsa 'x' harpysy.

let res = str.replace(/a.+x/g, '!');

Netijede üýtgeýjiniň içine '! zzz x kkk' setiriniň ýazyljakdygyny garaýarys. Ýöne, beýle bolmaýar - üýtgeýjiniň içine '! kkk' setiri düşýär.

Mesele şonda, bizniň regulýar ifademiz 'a' harpyndan 'x' harpyna çenli ähli nyşanlary gözleýär. Ýöne, bizniň setirimizde iki sany 'x' harpysy bar! Açgözçiligiň sebäbi, regulýar ifade iň soňky 'x'-e çenli gözleýär, şonuň bilen biz garaşşanymyzdan başga zady gapdarýar.

Elbetde, köplenç bu hereket bize gerek bolýar. Ýöne, aýratyn bu ýagdaýda biz açgözçiligi ýatyryp, regulýar ifade birinji 'x'-i gözlemegini aýtmak isleýäris.

Açgözçiligi çäklendirmek üçin, gaýtalanma operatorynyň yzyndan sorag nyşany goýmaly:

let res = str.replace(/a.+?x/g, '!');

Açgözçilik ähli gaýtalanma operatorlaryna çäklendirip bolýar: *, ?, we {} - şeýle: *?, ?? we {}?.

Setir berlen:

let str = 'aba accca azzza wwwwa';

Her iki gyrasynda 'a' harpylary durýan ähli setirleri tapýan we olaryň her birini '!' bilen çalşýan bir regulýar ifade ýazyň. 'a' harpylarynyň arasynda islendik nyşan bolup biler ('a' dan başga).

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et