Cadena con expresión regular en JavaScript

Las expresiones regulares pueden representarse en forma de cadenas. Esto es útil en el caso de que necesites hacer inserciones de variables en las expresiones regulares, o formarlas dinámicamente.

Veamos un ejemplo. Supongamos que tenemos la siguiente cadena:

javascriptlet str = 'img.png';

Supongamos que a esta cadena le aplicamos la siguiente expresión regular:

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

Reescribamos esta expresión regular en forma de cadena. Esto se hace mediante un objeto especial RegExp:

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

Ahora extraigamos una parte de la expresión regular a una variable y insertémosla usando concatenación:

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

Y ahora insertemos la variable usando cadenas de plantilla:

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

Y ahora formemos parte de la expresión regular a partir de un array:

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

Tareas prácticas

Задание 1

Extraiga los nombres de las zonas de dominio a una variable separada:

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

Modifique la tarea anterior teniendo en cuenta que las zonas de dominio se almacenan en forma de array:

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