0

问题很简单,假设以下字符串:

var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>'

你如何提取href的值。我会想像

var arr = str.match(/(?:href=")(\w+)/g) ;
--> ["href="aaaa", "href="bb"]

我当然想要

["aaaa", "bb"]

没有 /g 它会接近,但它只匹配“aaaa”。任何建议如何解决这个问题?

谢谢!

4

2 回答 2

2

因为 Javascript 没有后视功能,所以这可能是您想要的。自然会有优雅的解决方案:

input.match(/<[^href|/]*(href[\s]*=[\s]*")([^"]+)(?=">)/g).map(
function(x){return x.split('href')[1].replace(/[^"]+"(.*)/,'$1');
})

此外,您最好获得一个 HTML 解析插件。并使用它提取您需要的属性。

干杯。

于 2013-04-03T18:45:27.850 回答
2

用 JS 解析 DOM 非常简单。

var str = '<a href="aaaa">aaaaa</a><a href="bb">b\'s</a>',
    help = document.createElement('div');

helper.innerHTML = str;

Array.prototype.forEach.call(help.querySelectorAll("a[href]"), function (elem) {
    console.log(elem.getAttribute('href'));
});

http://jsfiddle.net/ExplosionPIlls/gtdFh/

于 2013-04-03T19:26:42.717 回答