Komanda 'arba' reguliariųjų išraiškų JavaScript
Šioje pamokoje išnagrinėsime komandą
'|', kuri yra galingesnė
'arba' varianto forma, palyginti
su komanda [ ]. Ši komanda leidžia
padalinti reguliariąją išraišką į kelias dalis.
Tuomet ieškomas atitikmuo gali tenkinti vieną
reguliarosios išraiškos dalį arba kitą. Pažiūrėkime
į pavyzdžius.
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks: trys
raidės 'a' arba trys raidės 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
Rezultate į kintamąjį bus įrašyta tai:
'! ! abb'
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks: trys
raidės 'a' arba nuo 1 ir daugiau
raidžių 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! ! axx'
Pavyzdys
Šiame pavyzdyje paieškos šablonas yra toks: viena arba daugiau raidžių arba trys skaitmenys:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! 1 12 !'
Pavyzdys
Vertikali linija gali padalinti reguliariąją išraišką ne į dvi dalis, o į bet kokį skaičių dalių:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! ddd'
Pavyzdys
Jei vertikali linija yra roundiniuose skliaustuose,
tai 'arba' veikia tik tuose skliaustuose.
Pavyzdžiui, suraskime eilutes pagal šį
šabloną: pradžioje yra arba 'a',
arba 'b' vieną ar daugiau kartų, o po to
dvi raidės 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! exx'
Praktinės užduotys
Duota eilutė:
let str = 'aeeea aeea aea axa axxa axxxa';
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: kraštuose yra raidės 'a',
o tarp jų - arba raidė 'e' bet kokį
skaičių kartų arba raidė 'x' bet kokį
skaičių kartų.
Duota eilutė:
let str = 'aeeea aeea aea axa axxa axxxa';
Parašykite reguliariąją išraišką, kuri ras eilutes
pagal šabloną: kraštuose yra raidės 'a',
o tarp jų - arba raidė 'e' du kartus
arba raidė 'x' bet kokį skaičių kartų.