Skupiny symbolov v regulárnych výrazoch JavaScript
Existujú špeciálne príkazy, ktoré umožňujú
vybrať naraz celé skupiny symbolov. Príkaz
\d znamená číslicu od 0 do 9.
Príkaz \w označuje číslicu, latinské
písmeno alebo znak podčiarknutia. Príkaz \s
označuje medzeru alebo biely znak:
medzeru, koniec riadku, tabulátor. Je možné
invertovať hodnotu príkazu napísaním veľkého
písmena: napríklad, ak \d je číslica,
tak \D je nie číslica.
Príklad
Nájdime všetky číslice:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! !! !!!'
Príklad
Operátory opakovania považujú príkazy-skupiny
za jeden celok, to znamená, že zoskupujúce zátvorky
nie sú potrebné. V nasledujúcom príklade vyhľadávací vzor
vyzerá takto: číslica od 0 do 9
jeden alebo viac krát:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! abc @@@'
Príklad
V nasledujúcom príklade vyhľadávací vzor vyzerá
takto: čokoľvek jeden alebo viac krát,
ale nie číslica od 0 do 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'123!3!'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto: biely znak jeden krát:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'1!12!123!abc!@@@'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
NIE biely znak jeden alebo viac krát.
Všetky podreťazce, oddelené medzerami, sa nahradia
na '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! ! !'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
číslica alebo písmeno jeden alebo viac krát.
Všetky podreťazce, pozostávajúce z číslic a písmen,
sa nahradia na '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! ! @@@'
Príklad
V tomto príklade vyhľadávací vzor vyzerá takto:
NIE číslica a NIE písmeno jeden alebo viac krát.
Pod túto definíciu v našom prípade spadá
'@@@' a všetky medzery (tie sú tiež
nie číslice a nie písmená). Dávajte pozor na
to, že na konci je jedna '!' - do nej
sa pretransformoval reťazec ' @@@' - s
medzerou na začiatku:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Výsledkom do premennej sa zapíše nasledovné:
'1!12!123!Abc!'
Praktické úlohy
Daný reťazec:
let str = 'a1a a2a a3a a4a a5a aba aca';
Napíšte regulárny výraz, ktorý nájde reťazce,
v ktorých po okrajoch stoja písmená 'a',
a medzi nimi jedna číslica.
Daný reťazec:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Napíšte regulárny výraz, ktorý nájde reťazce,
v ktorých po okrajoch stoja písmená 'a',
a medzi nimi ľubovoľný počet číslic.
Daný reťazec:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Napíšte regulárny výraz, ktorý nájde reťazce,
v ktorých po okrajoch stoja písmená 'a',
a medzi nimi ľubovoľný počet číslic (vrátane
nuly číslic, to znamená reťazec 'aa').
Daný reťazec:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Napíšte regulárny výraz, ktorý nájde reťazce
nasledovného typu: po okrajoch stoja písmená
'a' a 'b', a medzi nimi - nie
číslo a nie medzera.
Daný reťazec:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Napíšte regulárny výraz, ktorý nájde reťazce
nasledovného typu: po okrajoch stoja písmená
'a' a 'b', a medzi nimi - nie
písmeno, nie číslica a nie medzera.
Daný reťazec:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Napíšte regulárny výraz, ktorý nahradí všetky medzery
na '!'.