Here's a short piece of code:
var utility = {
escapeQuotes: function(string) {
return string.replace(new RegExp('', 'g'),'\');
},
unescapeQuotes: function(string) {
return string.replace(new RegExp('\', 'g'),'');
}
};
var a = 'hi ';
var b = utility.escapeQuotes(a);
var c = utility.unescapeQuotes(b);
console.log(b + ' | ' + c);
I would expect this code to work, however as a result I receive:
hi | hi
If I change the first parameter of the new RegExp constructor in the unescapeQuotes method to 4 backslashes everything starts working as it should.
string.replace(new RegExp('\\', 'g'),'');
The result:
hi | hi
Why are four backslashes needed as the first parameter of the new RegExp constructor? Why doesn't it work with only 2 of them?