我有这个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);
}