Javascript正则表达式 - exec无限循环

Nir*_*Nir 8 javascript regex

我正在尝试使用正则表达式获取链接文本.可能有几个链接可能与模式匹配,我想要到最远的第四个.这是我的JS代码:

var level=1;
while ( _match = /<a href="http:\/\/www.mysite.com\/x\/(?:.*)>(.*)<\/a>/img.exec(_html)){
    if (level < 5)  (_anchor_text=_match[1]);
    level ++;
}
Run Code Online (Sandbox Code Playgroud)

问题是这个代码在IE上进入无限循环(在FF上运行良好),尽管模式存在.任何帮助表示赞赏.

Jam*_*mes 10

RegExp.exec我相信,利用该lastIndex属性并不断修改它以使"全局组捕获"成为可能; 要使它工作,你需要有一个正则表达式.目前你在每次迭代时都在创建一个新的,所以它不起作用......

试试这个:

var level = 1;
var pattern = /<a href="http:\/\/www.mysite.com\/x\/(?:.*)>(.*)<\/a>/img;
var _match;
while ( _match = pattern.exec(_html)){
     if (level < 5)  (_anchor_text=_match[1]);
     level ++;
}
Run Code Online (Sandbox Code Playgroud)

  • @AtesGoral,在ES5中它不再起作用了. (2认同)