从字符串中提取所有链接

时间:2009-09-28 15:09:37

标签: javascript regex dom

我有一个包含页面HTML源代码的javascript变量(不是当前页面的源代码),我需要从这个变量中提取所有链接。 关于这样做的最佳方式的任何线索?

是否可以在变量中为HTML创建DOM,然后再进行操作?

4 个答案:

答案 0 :(得分:8)

我不知道这是否是推荐方式,但它有效:(仅限JavaScript)

var rawHTML = '<html><body><a href="foo">bar</a><a href="narf">zort</a></body></html>';

var doc = document.createElement("html");
doc.innerHTML = rawHTML;
var links = doc.getElementsByTagName("a")
var urls = [];

for (var i=0; i<links.length; i++) {
    urls.push(links[i].getAttribute("href"));
}
alert(urls)

答案 1 :(得分:7)

如果你正在使用jQuery,我真的很容易相信:

var doc = $(rawHTML);
var links = $('a', doc);

http://docs.jquery.com/Core/jQuery#htmlownerDocument

答案 2 :(得分:3)

如果您需要替换链接,这非常有用......

var linkReg = /(<[Aa]\s(.*)<\/[Aa]>)/g;

var linksInText = text.match(linkReg);

答案 3 :(得分:1)

如果您正在运行Firefox,那么您可以!它被称为DOMParser,请查看:

DOMParser is mainly useful for applications and extensions based on Mozilla platform. While it's available to web pages, it's not part of any standard and level of support in other browsers is unknown.