Riestiniai skliaustai JavaScript reguliariosiose išraiškose
Operatoriai '+', '*', '?'
yra geri, tačiau jų pagalba negalima nurodyti
konkrečų pasikartojimų skaičių. Šiuo atveju
jums padės operatorius {}.
Jis veikia taip: {5}
- penki pasikartojimai, {2,5} – pasikartoja
nuo dviejų iki penkių (abu imtinai), {2,}
- pasikartoja du ar daugiau kartų. Atkreipkite dėmesį
į tai, kad tokio varianto - {,2}
- nėra. Pažvelkite į pavyzdžius:
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' vieną
ar du kartus, raidė 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'xx ! ! xaaax'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' du
kartus ar daugiau, raidė 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'xx xax ! !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'x', raidė 'a' tris
kartus, raidė 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'xx xax xaax !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
raidė 'a' dešimt kartų:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'aaa ! aaa'
Pavyzdys
Šiame pavyzdyje kodo autorius norėjo tokį šabloną:
raidė 'x', raidė 'a' tris
kartus ir mažiau, raidė 'x',
bet, deja, toks - {,3} - neveikia.
Reikia nurodyti aiškiai:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'xx ! ! !'
Pavyzdys
Nulis taip pat leidžiamas:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! !'
Praktinės užduotys
Duota eilutė:
let str = 'aa aba abba abbba abbbba abbbbba';
Parašykite reguliariąją išraišką, kuri ras eilutes
'abba', 'abbba', 'abbbba'
ir tik jas.
Duota eilutė:
let str = 'aa aba abba abbba abbbba abbbbba';
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b' pasitaiko
mažiau nei 3 kartus (imtinai).
Duota eilutė:
let str = 'aa aba abba abbba abbbba abbbbba';
Parašykite reguliariąją išraišką, kuri ras eilutes
pavidalo 'aba', kuriose 'b' pasitaiko
daugiau nei 4 kartus (imtinai).