String sa regularnim izrazom u JavaScript-u

Regularni izrazi se mogu predstaviti u vidu stringova. Ovo je zgodno u slučaju, ako je potrebno praviti umetanja promenljivih u regularne izraze, ili ih formirati dinamički.

Pogledajmo na primeru. Neka imamo sledeći string:

javascriptlet str = 'img.png';

Neka na ovaj string primenjujemo sledeći regularni izraz:

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

Hajde da prepišemo ovaj regularni izraz u vidu stringa. Ovo se radi pomoću specijalnog objekta RegExp:

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

Hajde sada da izdvojimo deo regularnog izraza u promenljivu i umetnemo ga pomoću konkatenacije:

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

A sada da umetnemo promenljivu pomoću template stringova:

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

A sada da formiramo deo regularnog izraza iz niza:

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

Praktični zadaci

Задание 1

Izdvojite nazive domen zona u posebnu promenljivu:

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

Modifikujte prethodni zadatak uzevši u obzir da su domen zone sačuvane u vidu niza:

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