Ú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í:
'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 !:
'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':
'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:
'aab'.replace(/a/, '!'); // vrátí '!ab'
A nyní regulární výraz najde všechny shody:
'aab'.replace(/a/g, '!'); // vrátí '!!b'
Je dán řetězec:
let 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'.
Je dán řetězec:
let 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'.
Je dán řetězec:
let str = 'aba aca aea abba adca abea';
Napište regulární výraz, který najde řetězce
'abba' a 'abea', a nezachytí
'adca'.