在regexp javascript中捕获第三个href?

在regexp javascript中捕获第三个href?,javascript,regex,Javascript,Regex,RSS阅读器返回 Submitted by <a href="http://www.reddit.com/user/guiness_as_usual"> guiness_as_usual </a><br/> <a href="https://www.spaceglasses.com/"> [link] </a> <a href="http://www.reddit.com/r/technology/comments

RSS阅读器返回

Submitted by
<a href="http://www.reddit.com/user/guiness_as_usual">
    guiness_as_usual
</a><br/>
<a href="https://www.spaceglasses.com/">
    [link]
</a>
<a href="http://www.reddit.com/r/technology/comments/1kmdom/meta_glasses_become_a_real_life_iron_man/">
    [242 comments]
</a>
提交人

我要做的是将第二个和第三个href属性捕获到两个不同的变量中。我必须用JavaScript来做这件事。有人知道如何使用regexp JavaScript捕获这两个值吗

//编辑 我正在寻找这个,但在Javascript中
我希望能够捕获结果[0]、结果[1]和结果[2]。

您可以像这样使用
DOMParser

var parser = new DOMParser();
var tempDoc = parser.parseFromString(htmlStr,"text/html");
var anchor2 = tempDoc.getElementsByTagName('a')[1];
var anchor3 = tempDoc.getElementsByTagName('a')[2];
var href2 = anchor2.getAttribute("href");//or anchor2.href; to get fully qualified link
var href3 = anchor3.getAttribute("href");//or anchor3.href; to get fully qualified link

正如您在的答案中所看到的,您无法使用正则表达式解析HTML。在中,您将了解如何用JavaScript解析HTML。那么,试试这个:

var el = document.createElement('div');
el.innerHTML = yourRssString;
var innerElements = el.getElementsByTagName('a');
var secondHref = innerElements[1].getAttribute('href');
var thirdHref = innerElements[2].getAttribute('href');

如果您确实需要使用regexp。 您可以尝试以下方法:

var text = 'submitted by <a href="http://www.reddit.com/user/guiness_as_usual"> guiness_as_usual </a> <br/> <a href="https://www.spaceglasses.com/">[link]</a> <a href="http://www.reddit.com/r/technology/comments/1kmdom/meta_glasses_become_a_real_life_iron_man/">[242 comments]</a>',
    hrefs = [],
    search = /href="([^"]+)"/g;
while(hreftmp = search.exec(text)) {
    hrefs.push(hreftmp);
}

document.write(hrefs[1]);
document.write(hrefs[2]);
var text='submitted by
', hrefs=[], 搜索=/href=“([^”]+)”/g; while(hreftmp=search.exec(text)){ hrefs.push(hreftmp); } 文件编写(hrefs[1]); 文件编写(hrefs[2]);

它很简单,可以与您的示例一起使用。

在我给您答案之前,您自己尝试过吗?您可能会得到一个“不要用正则表达式解析HTML”的流“。如果你不能保证你的输入结构,这通常是一个很好的建议。您是否绝对确定RSS阅读器将始终返回与您发布的结构完全相同的数据?这是一个DOM片段,您可能应该使用DOM遍历方法来获取您所寻找的值(例如,jQuery将使这成为一个非常简单的命题)。@user2686462:
[^]
表示:除
之外的所有字符。
@user2686462如ProgramFOX所说:[“]+表示所有连续字符,如”。如果我们添加^,这意味着:所有连续字符都不是“。我们知道href包含在两个字符之间”,因此如果我们想要完整的URL,我们需要保留不在“两个字符之间”的字符。如果我的回答符合你的问题,你能接受吗?