I am refering to code from [Case insensitive string replacement in JavaScript?](https://stackoverflow.com/questions/280793/case-insensitive-string-replacement-in-javascript/280970#280970):

```
RegExp.escape = function(str) 
{
  var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\
  return str.replace(specials, "\\$&");
}

```

What does `\\$&` mean? 

I think `\\` escapes the `\` character. Then `$&`, I thought it should be `$1` to match the 1st match? tho `$1` does not work right