Строка с регуляркой в 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);
Практические задачи
Вынесите названия доменных зон в отдельную переменную:
javascriptlet reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Модифицируйте предыдущую задачу с учетом того, что доменные зоны хранятся в виде массива:
javascriptlet arr = ['ru', 'by', 'ua'];