2014-03-06 62 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