String com regex em JavaScript
As expressões regulares podem ser representadas na forma de strings. Isso é útil no caso de você precisar fazer inserções de variáveis nas regex, ou formá-las dinamicamente.
Vamos ver um exemplo. Suponha que temos a seguinte string:
let str = 'img.png';
Suponha que a esta string nós aplicamos a seguinte expressão regular:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
Vamos reescrever esta expressão regular
na forma de uma string. Isso é feito usando
um objeto especial RegExp:
let reg = new RegExp('\\.(png|jpg)$');
let res = str.match(reg);
Agora, vamos extrair parte da regex para uma variável e inseri-la usando concatenação:
let pat = 'png|jpg';
let reg = new RegExp('\\.(' + pat + ')$');
let res = str.match(reg);
E agora, vamos inserir a variável usando strings de template:
let pat = 'png|jpg';
let reg = new RegExp(`\\.(${pat})$`);
let res = str.match(reg);
E agora, vamos formar parte da regex a partir de um array:
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\\.(${pat})$`);
let res = str.match(reg);
Problemas Práticos
Extraia os nomes dos domínios de topo para uma variável separada:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Modifique o problema anterior considerando que os domínios de topo estão armazenados na forma de um array:
let arr = ['ru', 'by', 'ua'];