Javascript regex exec方法不起作用 var rgx=/

Javascript regex exec方法不起作用 var rgx=/,javascript,regex,node.js,Javascript,Regex,Node.js,每次调用exec时,您都在重复一个步骤并转到下一个匹配。你做得太多了 您还必须使匹配组不贪婪。当您编写诸如*或+之类的内容时,您应该始终非常小心,因为它们可以匹配比您想要的更多的内容 我修复了您的代码,如下所示: var rgx = /<td.+ headers=["']d8.+ ["']>(.+)<\/td>/i, str = "<tr><td class='' headers='d8073e47 d8073e50 '>.cpp</

每次调用
exec
时,您都在重复一个步骤并转到下一个匹配。你做得太多了

您还必须使匹配组不贪婪。当您编写诸如
*
+
之类的内容时,您应该始终非常小心,因为它们可以匹配比您想要的更多的内容

我修复了您的代码,如下所示:

var rgx = /<td.+ headers=["']d8.+ ["']>(.+)<\/td>/i,
    str = "<tr><td class='' headers='d8073e47 d8073e50 '>.cpp</td><td class='' headers='d8073e47 d8073e50 '>text/x-c</td></tr>",
    matches = [];
if(rgx.exec(str)&&rgx.exec(str)[1]) {
    console.log(rgx.exec(str)[1]);
    matches.push(rgx.exec(str)[1])
}
console.log(matches);
var rgx=/]+headers=[“']d8[^\>]+[“']>(.+?)/ig,
str=“.cpptext/x-c”,
匹配项=[],
物件;
while(res=rgx.exec(str)){
匹配。推送(res[1]);
}
console.log(匹配项);

当我尝试使用全局标志进行while循环时,它会进入无限循环单击“演示”链接,然后单击“使用JS运行”按钮。当然不会,您添加了
rgx.exec(str)
!改为记录
res
。每次你调用
rgx.exec
你都会改变
rgx的状态,我不会修改里面的任何东西rgx@nikoss在上一个屏幕截图中,您甚至没有g标志。当然,这是一个无限循环。要么接受我的代码,要么试着理解它。
var rgx = /<td[^\>]+ headers=["']d8[^\>]+ ["']>(.+?)<\/td>/ig,
    str = "<tr><td class='' headers='d8073e47 d8073e50 '>.cpp</td><td class='' headers='d8073e47 d8073e50 '>text/x-c</td></tr>",
    matches = [],
    res;
while (res = rgx.exec(str)) {
   matches.push(res[1]);
}
console.log(matches);