javascript regex .match只找到一个结果

时间:2012-03-26 06:17:43

标签: javascript regex html-parsing

我有这个js代码:

result = subject.match(/<a.*class="gallery_browser_thumbnail".*href="(.+)">/i);

我希望在html源代码上获得多个标签的href 但它只显示了1个结果

如果我在模式结束时使用/ g它返回整个模式但我只想要href部分 我的意思是 - &gt; (。+)这部分

这就是我捕获html输入的方式:

var subject = String(document
.getElementsByTagName("body")[0].innerHTML);

任何帮助?

最终工作脚本:

    var subject = String(document.getElementsByTagName("body")[0].innerHTML);
var regex = /<a.*class="gallery_browser_thumbnail".*href="(.+)">/gi;
var matched = null;
while (matched = regex.exec(subject)) {
  alert(matched[1]);
}

2 个答案:

答案 0 :(得分:0)

通过添加延迟量词?来更改为延迟匹配:

result = subject.match(/<a.*?class="gallery_browser_thumbnail".*?href="(.+?)">/i);

答案 1 :(得分:0)

您可以使用exec来测试RegExp。像这样:

var subject = String(document.getElementsByTagName("body")[0].innerHTML),
    regexp = /<a.*class="gallery_browser_thumbnail".*href="(.+)">/gi, //g for global match
    match = regexp.exec(subject),
    result = [];
while(match != null){
    result.push(match[1]); // the second value is matched group
    match = regexp.exec(subject);
}