java脚本regex.match只查找一个结果

java script regex .match find only one result

本文关键字:一个 结果 查找 脚本 regex match java      更新时间:2023-09-26

我有这个js代码:

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

我想获取html源上多个a标记的href但它只显示1个结果

如果我在模式末尾使用/g,它会返回整个模式,但我只想要href部分我的意思是->(.+)这个部分

这就是我捕获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]);
}

通过添加惰性量词?:更改为惰性匹配

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

您可以使用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);
}