Komanda 'vai' regulārajās izteiksmēs JavaScript
Šajā nodarbībā mēs analizēsim komandu
'|', kas ir jaudīgāka
'vai' variants salīdzinājumā
ar komandu [ ]. Šī komanda ļauj
sadalīt regulāro izteiksmi vairākās daļās.
Šajā gadījumā meklētais var atbilst vai nu vienai
regulārās izteiksmes daļai, vai otrai. Apskatīsim
piemērus.
Piemērs
Šajā piemērā meklēšanas šablons ir šāds: trīs
burti 'a' vai trīs burti 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
Rezultātā mainīgajā tiks ierakstīts sekojošs:
'! ! abb'
Piemērs
Šajā piemērā meklēšanas šablons ir šāds: trīs
burti 'a' vai no 1 un vairāk
burti 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
Rezultātā mainīgajā tiks ierakstīts sekojošs:
'! ! ! ! axx'
Piemērs
Šajā piemērā meklēšanas šablons ir šāds: viens vai vairāki burti vai trīs cipari:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
Rezultātā mainīgajā tiks ierakstīts sekojošs:
'! ! ! 1 12 !'
Piemērs
Vertikālā līnija var sadalīt regulāro izteiksmi ne divās daļās, bet jebkurā daļu daudzumā:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
Rezultātā mainīgajā tiks ierakstīts sekojošs:
'! ! ! ddd'
Piemērs
Ja vertikālā līnija atrodas apaļās iekavās,
tad 'vai' darbojas tikai šo
iekavu iekšienē.
Piemēram, atradīsim virknes pēc sekojoša
šablona: sākumā atrodas vai 'a',
vai 'b' vienu vai vairāk reizes, un pēc tam
divi burti 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
Rezultātā mainīgajā tiks ierakstīts sekojošs:
'! ! ! exx'
Praktiskie uzdevumi
Dota virkne:
let str = 'aeeea aeea aea axa axxa axxxa';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc šablona: malās atrodas burti 'a',
un starp tiem - vai burts 'e' jebkurš
daudzums reižu vai burts 'x' jebkurš
daudzums reižu.
Dota virkne:
let str = 'aeeea aeea aea axa axxa axxxa';
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc šablona: malās atrodas burti 'a',
un starp tiem - vai burts 'e' divas reizes
vai burts 'x' jebkurš daudzums reižu.