javascript:提取字符串的一部分(正则表达式)

时间:2013-04-03 18:40:22

标签: javascript regex string match

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

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”。有任何建议如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

因为Javascript没有lookbehind,所以这可能就是你想要的。当然,成为更优雅的解决方案:

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

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

干杯。

答案 1 :(得分: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/