Why do
console.log(/a/ == /a/);
and
var regexp1 = /a/;
var regexp2 = /a/;
console.log(regexp1 == regexp2);
bo
"Problem":
regex
is an object
- a reference type, so the comparsion is done by reference, and those are two different objects.
console.log(typeof /a/); // "object"
If both operands are objects, then JavaScript compares internal references which are equal when operands refer to the same object in memory.
MDN
Solution:
var a = /a/;
var b = /a/;
console.log(a.toString() === b.toString()); // true! yessss!
Live DEMO
Another "hack" to force the toString()
on the regex
es is:
console.log(a + "" === b + "");