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:
let str = 'img.png';
Supongamos que a esta cadena le aplicamos la siguiente expresión regular:
let 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:
let 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:
let pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
Y ahora insertemos la variable usando cadenas de plantilla:
let 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:
let exts = ['png', 'jpg'];
let pat = exts.join('|')
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Tareas prácticas
Extraiga los nombres de las zonas de dominio a una variable separada:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Modifique la tarea anterior teniendo en cuenta que las zonas de dominio se almacenan en forma de array:
let arr = ['ru', 'by', 'ua'];