Složené závorky v regulárních výrazech JavaScriptu
Operátory '+', '*', '?'
jsou užitečné, ale nelze jimi určit
konkrétní počet opakování. V tomto případě
vám pomůže operátor {}.
Funguje následovně: {5}
- pět opakování, {2,5} – opakuje se
dvakrát až pětkrát (včetně), {2,}
- opakuje se dvakrát a vícekrát. Všimněte si,
že varianta {,2}
- neexistuje. Podívejte se na příklady:
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'x', písmeno 'a' jednou
nebo dvakrát, písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xx ! ! xaaax'
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'x', písmeno 'a' dvakrát
a vícekrát, písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xx xax ! !'
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'x', písmeno 'a' třikrát,
písmeno 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xx xax xaax !'
Příklad
V tomto příkladu vypadá vyhledávací vzor takto:
písmeno 'a' desetkrát:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Výsledek zapsaný do proměnné bude následující:
'aaa ! aaa'
Příklad
V tomto příkladu autor kódu zamýšlel tento vzor:
písmeno 'x', písmeno 'a' třikrát
a méněkrát, písmeno 'x',
ale bohužel toto - {,3} - nefunguje.
Je třeba uvést explicitně:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xx ! ! !'
Příklad
Nula je také povolena:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! !'
Praktické úlohy
Je dán řetězec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napište regulární výraz, který najde řetězce
'abba', 'abbba', 'abbbba'
a pouze je.
Je dán řetězec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napište regulární výraz, který najde řetězce
tvaru 'aba', ve kterých se 'b' vyskytuje
méně než 3-krát (včetně).
Je dán řetězec:
let str = 'aa aba abba abbba abbbba abbbbba';
Napište regulární výraz, který najde řetězce
tvaru 'aba', ve kterých se 'b' vyskytuje
více než 4-krát (včetně).