Reťazec s regulárnym výrazom v JavaScripte

Regulárne výrazy môžu byť reprezentované ako reťazce. Je to užitočné v prípade, keď potrebujete vkladať premenné do regulárnych výrazov, alebo ich dynamicky tvoriť.

Pozrime sa na príklad. Predpokladajme, že máme nasledujúci reťazec:

javascriptlet str = 'img.png';

Predpokladajme, že na tento reťazec aplikujeme nasledujúci regulárny výraz:

javascriptlet reg = /\.(png|jpg)$/;
let res = str.match(reg);

Prepíšme tento regulárny výraz do podoby reťazca. To sa robí pomocou špeciálneho objektu RegExp:

javascriptlet reg = new RegExp('\\.(png|jpg)$');
let res = str.match(reg);

Teraz vyberme časť regulárneho výrazu do premennej a vložme ju pomocou konkatenácie:

javascriptlet pat = 'png|jpg';
let reg = new RegExp('\\.(' + pat + ')$');
let res = str.match(reg);

A teraz vložme premennú pomocou šablónových reťazcov:

javascriptlet pat = 'png|jpg';
let reg = new RegExp(`\\.(${pat})$`);
let res = str.match(reg);

A teraz vytvorme časť regulárneho výrazu z poľa:

javascriptlet exts = ['png', 'jpg'];
let pat  = exts.join('|');
let reg  = new RegExp(`\\.(${pat})$`);
let res  = str.match(reg);

Praktické úlohy

Задание 1

Vymeňte názvy doménových zón do samostatnej premennej:

javascriptlet reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Задание 2

Upravte predchádzajúcu úlohu s ohľadom na to, že doménové zóny sú uložené v podobe poľa:

javascriptlet arr = ['ru', 'by', 'ua'];