Zložené zátvorky v regulárnych výrazoch JavaScript
Operátory '+', '*', '?'
sú dobré, avšak pomocou nich nie je možné špecifikovať
konkrétny počet opakovaní. V tomto prípade
vám príde na pomoc operátor {}.
Funguje nasledovne: {5}
- päť opakovaní, {2,5} – opakuje sa
od dvoch do piatich (oba vrátane), {2,}
- opakuje sa dva a viac krát. Dávajte pozor
na to, že takáto možnosť - {,2}
- neexistuje. Pozrite si príklady:
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
písmeno 'x', písmeno 'a' raz
alebo dva krát, písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'xx ! ! xaaax'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
písmeno 'x', písmeno 'a' dva
krát a viac, písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'xx xax ! !'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
písmeno 'x', písmeno 'a' tri
krát, písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'xx xax xaax !'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
písmeno 'a' desať krát:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'aaa ! aaa'
Príklad
V tomto príklade autor kodu chcel takýto vzor:
písmeno 'x', písmeno 'a' tri
krát a menej, písmeno 'x',
ale, bohužiaľ, toto - {,3} - nefunguje.
Je potrebné explicitne uviesť:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'xx ! ! !'
Príklad
Nula je tiež povolená:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! !'
Praktické úlohy
Daný reťazec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napíšte regulárny výraz, ktorý nájde reťazce
'abba', 'abbba', 'abbbba'
a len ich.
Daný reťazec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napíšte regulárny výraz, ktorý nájde reťazce
tvaru 'aba', v ktorých sa 'b' vyskytuje
menej ako 3-krát (vrátane).
Daný reťazec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napíšte regulárny výraz, ktorý nájde reťazce
tvaru 'aba', v ktorých sa 'b' vyskytuje
viac ako 4-krát (vrátane).