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':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'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':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'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':

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'xx xax xaax !'

Příklad

V tomto příkladu vypadá vyhledávací vzor takto: písmeno 'a' desetkrát:

javascriptlet str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'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ě:

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'xx ! ! !'

Příklad

Nula je také povolena:

javascriptlet str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');

Výsledek zapsaný do proměnné bude následující:

javascript'! ! ! !'

Praktické úlohy

Задание 1

Je dán řetězec:

javascriptlet str = 'aa aba abba abbba abbbba abbbbba';

Napište regulární výraz, který najde řetězce 'abba', 'abbba', 'abbbba' a pouze je.

Задание 2

Je dán řetězec:

javascriptlet 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ě).

Задание 3

Je dán řetězec:

javascriptlet 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ě).