Príkaz 'alebo' v regulárnych výrazoch JavaScript

V tejto lekcii rozoberieme príkaz '|', ktorý predstavuje výkonnejšiu variantu 'alebo' v porovnaní s príkazom [ ]. Tento príkaz umožňuje rozdeliť regulárny výraz na niekoľko častí. Pričom hľadaný reťazec môže spĺňať buď jednu časť regulárneho výrazu, alebo druhú. Pozrime sa na príkladoch.

Príklad

V tomto príklade je vyhľadávací vzor takýto: tri písmená 'a' alebo tri písmená 'b':

javascriptlet str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');

Výsledkom do premennej zapíšeme nasledovné:

javascript'! ! abb'

Príklad

V tomto príklade je vyhľadávací vzor takýto: tri písmená 'a' alebo od 1 a viac písmen 'b':

javascriptlet str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');

Výsledkom do premennej zapíšeme nasledovné:

javascript'! ! ! ! axx'

Príklad

V tomto príklade je vyhľadávací vzor takýto: jedno alebo viac písmen alebo tri číslice:

javascriptlet str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');

Výsledkom do premennej zapíšeme nasledovné:

javascript'! ! ! 1 12 !'

Príklad

Zvislá čiara môže rozdeliť regulárny výraz nie na dve časti, ale na ľubovoľný počet častí:

javascriptlet str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');

Výsledkom do premennej zapíšeme nasledovné:

javascript'! ! ! ddd'

Príklad

Ak zvislá čiara stojí v okrúhlych zátvorkách, potom 'alebo' funguje len v rámci týchto zátvoriek.

Pre príklad nájdime reťazce podľa nasledujúceho vyhľadávacieho vzoru: na začiatku je alebo 'a', alebo 'b' jeden alebo viac krát, a potom dve písmená 'x':

javascriptlet str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');

Výsledkom do premennej zapíšeme nasledovné:

javascript'! ! ! exx'

Praktické úlohy

Задание 1

Daný reťazec:

javascriptlet str = 'aeeea aeea aea axa axxa axxxa';

Napíšte regulárny výraz, ktorý nájde reťazce podľa vzoru: po okrajoch stoja písmená 'a', a medzi nimi - alebo písmeno 'e' ľubovoľný počet krát alebo písmeno 'x' ľubovoľný počet krát.

Задание 2

Daný reťazec:

javascriptlet str = 'aeeea aeea aea axa axxa axxxa';

Napíšte regulárny výraz, ktorý nájde reťazce podľa vzoru: po okrajoch stoja písmená 'a', a medzi nimi - alebo písmeno 'e' dva krát alebo písmeno 'x' ľubovoľný počet krát.