在regexp javascript中捕获第三个href?

时间:2013-08-19 15:33:12

标签: 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/1kmdom/meta_glasses_become_a_real_life_iron_man/">
    [242 comments]
</a>

我要做的是将第二和第三个href属性捕获到两个不同的变量中。我必须在JavaScript中执行此操作。有没有人知道如何使用regexp JavaScript捕获这两个值?

//编辑 我正在寻找这个,但在Javascript中 http://rubular.com/r/ESRimQsZHc 我希望能够捕获结果[0],结果[1]和结果[2]。

3 个答案:

答案 0 :(得分:1)

您可以像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

答案 1 :(得分:1)

正如您可以阅读this question的答案,您无法使用正则表达式解析HTML。在this answer中,您将了解如何在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');

答案 2 :(得分:1)

如果你绝对需要使用正则表达式。 你可以试试这个:

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]);

这很简单,可以使用你的例子。