我正在尝试使用正则表达式获取链接文本。可能有几个链接可能与模式匹配,我想要到最远的第四个。这是我的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 ++;
}
问题是这个代码在IE上进入无限循环(在FF上运行良好),尽管模式存在。任何帮助表示赞赏。
答案 0 :(得分:9)
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 ++;
}