Úvod do regulárních výrazů v JavaScriptu

Regulární výrazy jsou příkazy pro složité vyhledávání a nahrazování (nebo prostě vyhledávání). Umožňují dělat velmi zajímavé věci, ale bohužel jsou poměrně těžké na osvojení.

Existuje několik metod JavaScriptu pro práci s regulárními výrazy. Začneme se s nimi seznamovat na příkladu replace - s touto metodou jste se již seznámili: jako první parametr přijímá, co má nahradit, a jako druhý - čím to má nahradit. A samotná metoda se aplikuje na řetězec, ve kterém se nahrazování provádí:

javascript'bab'.replace('a', '!'); // vrátí 'b!b'

Jako první parametr této metody lze předat nejen prostý řetězec, ale také regulární výraz. Regulární výraz představuje sadu příkazů umístěných uvnitř lomítek /. Tato lomítka se nazývají ohraničovače regulárních výrazů.

Samotné regulární výrazy se skládají ze dvou typů znaků: z těch, které označují samy sebe, a ze znaků-příkazů, které se nazývají speciální znaky.

Písmena a číslice označují samy sebe. V následujícím příkladě pomocí regulárního výrazu nahradíme písmeno 'a' za !:

javascript'bab'.replace(/a/, '!'); // vrátí 'b!b'

Například tečka je speciální znak a označuje libovolný znak. V následujícím příkladě najdeme řetězec podle tohoto vzoru: písmeno 'x', poté libovolný znak, poté znovu písmeno 'x':

javascript'xax eee'.replace(/x.x/, '!'); // vrátí '! eee'

Za ohraničovači lze psát modifikátory - příkazy, které mění obecné vlastnosti regulárního výrazu. Například modifikátor g zapne režim globálního vyhledávání a nahrazování - bez něj regulární výraz hledá pouze první shodu, s ním - všechny shody.

V následujícím příkladě není uveden modifikátor g a regulární výraz najde pouze první shodu:

javascript'aab'.replace(/a/,  '!'); // vrátí '!ab'

A nyní regulární výraz najde všechny shody:

javascript'aab'.replace(/a/g, '!'); // vrátí '!!b'
Задание 1

Je dán řetězec:

javascriptlet str = 'ahb acb aeb aeeb adcb axeb';

Napište regulární výraz, který najde řetězce 'ahb', 'acb', 'aeb' podle vzoru: písmeno 'a', libovolný znak, písmeno 'b'.

Задание 2

Je dán řetězec:

javascriptlet str = 'aba aca aea abba adca abea';

Napište regulární výraz, který najde řetězce 'abba', 'adca', 'abea' podle vzoru: písmeno 'a', 2 libovolné znaky, písmeno 'a'.

Задание 3

Je dán řetězec:

javascriptlet str = 'aba aca aea abba adca abea';

Napište regulární výraz, který najde řetězce 'abba' a 'abea', a nezachytí 'adca'.