Javascript js正则表达式差异

Javascript js正则表达式差异,javascript,regex,brackets,Javascript,Regex,Brackets,我有一个JS正则表达式匹配,它似乎不正确地包含了括号。我在进行了测试,它似乎在那里正常工作,但当我运行它时,我得到了以下警报响应: var temp = "[#]. [Type,' '][Problem w/ICD]['- ',Assessment][' : ',Comment][LF][LF]"; var rep = temp.match(/\[(.*?)\]/g); alert(rep); 为什么在捕获组之外包含括号?之所以包含括号,是因为在使用带有/g修饰符的正则表达式时,将丢失捕获组

我有一个JS正则表达式匹配,它似乎不正确地包含了括号。我在进行了测试,它似乎在那里正常工作,但当我运行它时,我得到了以下警报响应:

var temp = "[#]. [Type,' '][Problem w/ICD]['- ',Assessment][' : ',Comment][LF][LF]";
var rep = temp.match(/\[(.*?)\]/g);
alert(rep);

为什么在捕获组之外包含括号?

之所以包含括号,是因为在使用带有
/g
修饰符的正则表达式时,将丢失捕获组

如果正则表达式包含
g
标志,则该方法返回一个数组,其中包含所有匹配的子字符串,而不是匹配的对象捕获的组不会返回。

您需要在循环中使用
RegExp#exec()
,并通过索引1访问第一个捕获组

var re=/\[(.*?\]/g;
var str='[#]。[键入,\'\'][问题w/ICD][\'-\',评估][\':\',注释][LF][LF];
var-m;
var-res=[];
while((m=re.exec(str))!==null){
res.push(m[1]);
}
控制台日志(res)仅供参考:在这种情况下更有效。