Javascript:如何将找到的string.replace值传递给函数?

Keb*_*bbi 3 javascript regex replace function

当我有这样的事情:

var str = "0123";
var i = 0;
str.replace(/(\d)/g,function(s){i++;return s;}('$1'));
alert(i);
Run Code Online (Sandbox Code Playgroud)

为什么"i"等于1而不是4?另外,是否可以将$ 1的实际值传递给函数(在本例中为0,1,2,3)?

Mar*_*sen 12

使用时,使用string.replace(rx,function)以下参数调用该函数:

  • 匹配的子字符串
  • Match1,2,3,4等(带括号的子串匹配)
  • 子串的偏移量
  • 完整的字符串

你可以在这里读到所有和它有关的

在您的情况下,$ 1等于Match1,因此您可以将代码重写为以下内容,它应该按您的意愿工作:

var str = "0123";
var i = 0;
str.replace(/(\d)/g,function(s,m1){i++;return m1;});
alert(i);
Run Code Online (Sandbox Code Playgroud)