2014-03-06 41 views
0

我试图用正则表达式工作通过了一项功能中的作用,特别是我已经到洗牌字符串中间的内容。我找到了一个符合我需求的例子Here,我正在研究的答案是Brian Nickel的答案。的JavaScript - 了解变量作为参数

这是问题由Brian镍提出的代码:我在JavaScript和正则表达式非常初学者,我在这里看到一个函数作为参数传递

myStr.replace(/\b([a-z])([a-z]+)([a-z])\b/ig, function(str, first, middle, last) { 
return first + 
     middle.split('').sort(function(){return Math.random()-0.5}).join('') + 
     last; 
}); 

,但我不明白为什么有四个参数,特别是我不明白第一个参数str以及为什么如果我删除它,功能不能正常工作。

我现在这是一个愚蠢的问题,但我没有在网上找到我想要的,或者我不知道如何正确搜索。在此先感谢

+1

请参阅文档,函数在这里解释 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace –

+0

感谢罗马Hocke! – alessandrob

回答

2

当使用替换RegExp时,函数使用回调接收1 + n参数其中n是括号内的匹配。

的总是按照这个顺序:

  1. 完全匹配的字符串。
  2. 第一个括号。
  3. 第二个括号。
  4. 去吧...

如果删除str和参数first成为匹配的字符串。所以即使你不使用这个论点,你也需要它!

+0

谢谢,现在更清楚:) – alessandrob