Низ с регулярен израз в JavaScript

Регулярните изрази могат да бъдат представени под формата на низове. Това е удобно в случаите, когато е необходимо да правите вмъквания на променливи в регулярните изрази, или да ги формирате динамично.

Нека разгледаме пример. Да предположим, че имаме следния низ:

javascriptlet str = 'img.png';

Да предположим, че към този низ прилагаме следния регулярен израз:

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

Нека пренапишем този регулярен израз под формата на низ. Това става с помощта на специален обект RegExp:

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

Сега нека изнесем част от регулярния израз в променлива и да я вмъкнем чрез конкатенация:

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

А сега нека вмъкнем променливата с помощта на шаблонни низове:

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

А сега нека формираме част от регулярния израз от масив:

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

Практически задачи

Задание 1

Изнесете имената на домейните зони в отделна променлива:

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

Модифицирайте предходната задача, като вземете предвид, че домейните зони се съхраняват под формата на масив:

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