2015-11-08 52 views
-1

鑑於這樣的字符串+as[23+"[email protected]"[email protected]]更換[][後右邊的數字(在這種情況下:23)之間的@所有實例。請使用JavaScript解答(建議使用.replace())。因此,使用這種算法,+as[23+"[email protected]"[email protected]]將改爲+as[23+"AS23D"-23]使用兩個捕獲組與JavaScript的替換()函數

這裏是我的正則表達式\[(\d+)[^\]]*(\@*)\]第二個捕獲組不捕捉(Regexr告訴我,什麼是第二個捕獲組內捕獲)。我需要幫助,使第二個捕獲組捕獲所有的實例@

我試過使用Mozilla Developer尋求幫助,但它沒有奏效。任何幫助將不勝感激。答案必須有解釋。

如果這個問題還不夠清楚,請在評論中告訴我這是如何改進的。

+2

我投票結束這個問題作爲脫離主題,因爲stackoverflow不是代碼寫入服務。 – melpomene

+0

@melpomene我編輯了我的問題向你展示我的工作。 –

+1

爲什麼你認爲第二個捕獲組「未被捕獲」? (你是什麼意思?) – melpomene

回答

0

您可以使用replace在JavaScript中的回調函數:

var s = '+as[23+"[email protected]"[email protected]]'; 
var r = s.replace(/\[(\d+)[^\]]*\]/, function($0, $1) { 
        return $0.replace(/@/g, $1);}); 
//=> +as[23+"AS23D"-23] 

$0代表[]$1之間的整個字符串是第一個捕獲組即數之後[