⊗jsSpREGL 101 of 294 menu

Регуляр ифодаларнинг ғадамини чеклаш JavaScript

Регуляр ифодалар сустга ҳолатда ғадим бўлади. Бу улар максимал имкон бўлган миқдордаги белгиларни олишларини англатади. Келинг, мисол билан кўриб чиқайлик. Фарз қилайлик, бизда мана бундай сатр бор:

let str = 'aeeex zzz x kkk';

Фарз қилайлик, биз ушбу сатрда 'aeeex' қисм сатрни топмоқчимиз, қуйидаги намуна бўйича: ҳарф 'a', сўнгра бир ёки бир неча марта ҳар қандай белги, сўнгра 'x' ҳарфи.

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

Биз натижада ўзгарувчига '! zzz x kkk' сатр ёзилишини кутямиз. Аммо, бундай бўлмайди - ўзгарувчига '! kkk' сатр тушadi.

Ҳаммаси шундаки, бизнинг регуляр ифода 'a' ҳарфидан 'x' ҳарфигача бўлган барча белгиларни излайди. Аммо бизнинг сатримизда иккита 'x' ҳарфи бор! Ғадам сабаб шуки, регуляр ифода энг сўнги 'x' гача излайди, шу тариқа биз кутган нарсани эмас, бошқа нарсани олади.

Албатта, кўп ҳолларда бундай ҳаракат биз учун керак бўлади. Аммо айнан ушбу ҳолда биз ғадамни бекор қилишни ва регуляр ифодага биринчи 'x' гача излашни айтмоқчи бўламиз.

Ғадамни чеклаш учун, такрорлаш операторидан кейин савол белгиси қўйиш керак:

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

Ғадамни барча такрорлаш операторлари учун чеклаш мумкин: * ҳам, ? ҳам, {} ҳам - мана бундай: *?, ?? ва {}?.

Сатр берилган:

let str = 'aba accca azzza wwwwa';

Барча сатрларни топадиган регуляр ифода ёзинг, уларнинг четида 'a' ҳарфлари турсин, ва ҳар бирини '!' билан алмаштирсин. 'a' ҳарфлари орасида ҳар қандай белги ('a' дан бошқа) бўлиши мумкин.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш