⊗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' տողը:

Ամբողջ բանը նրանում է, որ մեր կանոնավոր արտահայտությունը փնտրում է բոլոր նիշերը '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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել