2015-11-08 30 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之间的整个字符串是第一个捕获组即数之后[