"str.replace(specials, "\\$&")" 中的 \\$& 是什么意思?

Jie*_*eng 4 javascript regex

我指的是JavaScript 中不区分大小写字符串替换的代码

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

什么\\$&意思?

我认为\\逃避这个\角色。然后$&,我认为应该$1匹配第一场比赛?tho$1不能正常工作

Bol*_*ock 5

$&表示与正则表达式匹配的整个(子)字符串,而不考虑捕获组。您得到的替换结果是字符串中的每个匹配项都被文字反斜杠(由 表示\\)转义。由于这里使用的正则表达式只包含一个字符类,“每个匹配”是指在匹配的字符类中列出的每个元字符。

例如,正则表达式字符串[abc]将被替换为\[abc\]

  • [匹配,因为它出现在字符类中。代表$&, 替换为\[

  • a,b并且c不是字符类中的元字符,因此它们被忽略

  • ]匹配,因为它出现在字符类中。代表$&, 替换为\]