Jimena, parte de este equipo de trabajo, nos ha hecho el favor de redactar este escrito porque conoce perfectamente el tema.
Solución:
Prueba esto:
String(regexp1) === String(regexp2))
Te estás poniendo false porque esos dos son objetos diferentes.
“Problema”:
regex
es un object
– a tipo de referenciaentonces el la comparación se hace por referenciay esos son dos objetos diferentes.
console.log(typeof /a/); // "object"
Si ambos operandos son objetos, JavaScript compara las referencias internas que son iguales cuando los operandos se refieren al mismo objeto en la memoria.
MDN
Solución:
var a = /a/;
var b = /a/;
console.log(a.toString() === b.toString()); // true! yessss!
Demo en vivo
Otro “truco” para forzar el toString()
sobre el regex
es:
console.log(a + "" === b + "");
Solo una suposición, pero JavaScript no crea un RegExp
object para su expresión regular y, por lo tanto, debido a que ha creado dos objetos diferentes (aunque tienen el mismo “valor”), ¿son realmente diferentes?
Si conservas algún reparo y capacidad de aumentar nuestro noticia te proponemos añadir una ilustración y con mucho placer lo leeremos.