如何在Javascript中获取字符串的href

时间:2016-10-17 17:53:51

标签: javascript regex

第三方工具我正在使用构建一个锚标记,如此...

"<a href="http://DevNode/Lists/Publications.aspx#/publication/123">http://DevNode/Lists/Publications.aspx#/publication/123</a>"

我需要隔离href,以便我可以修剪它。目前我的模式

reg = /^(<a\shref=")? http:\/\/DevNode\/Lists\/Publications.aspx#\/publication\/(\d+)/i {lastIndex: 0} 
如果href具有像这样的前导空格

将无法匹配

"<a href=" http://DevNode/Lists/Publications.aspx#/publication/123"> http://DevNode/Lists/Publications.aspx#/publication/123</a>"

请帮忙

4 个答案:

答案 0 :(得分:4)

如果您在浏览器上执行此操作,最简单的方法是让浏览器弄明白:

var div = document.createElement("div");
div.innerHTML = yourString;
var href = div.querySelector("a").href;

如果它是相对URL,这也有解决它的优点。如果您不想要,请改用getAttribute

var href = div.querySelector("a").getAttribute("href");

请注意,如果您使用getAttribute,如果该属性具有前导空格,则前导空格位于结果中;如果你想摆脱它,String#trim可能会有用。

答案 1 :(得分:1)

您可能希望使用*量词表示“任意次数(包括零)”与\s相结合,它将匹配空格,换行符或其他。

因此,使用\s+需要空格但可能有多个

并使用\s*,其中空格是可选的,但可能有一些

reg = /^(<a\s+href=")?\s*http:\/\/DevNode\/Lists\/Publications.aspx#\/publication\/(\d+)/i

答案 2 :(得分:0)

一个简单/快速的答案是使用jQuery,构建标记,并查找href属性。

$('<a href="http://DevNode/Lists/Publications.aspx#/publication/123">http://DevNode/Lists/Publications.aspx#/publication/123</a>')
.attr('href')

我会试着稍微给你一个RegExp。坚持下去......

正如所承诺的那样......这里是RegExp

&#13;
&#13;
var text = '<a href="http://DevNode/Lists/Publications.aspx#/publication/123">http://DevNode/Lists/Publications.aspx#/publication/123</a>';
console.log(text.match(/<a\s+(?:[^>]*?\s+)?href="([^"]*)"/)[1])
&#13;
&#13;
&#13;

答案 3 :(得分:0)

保持简单:

var ahref = '<a href="http://DevNode/Lists/Publications.aspx#/publication/123">http://DevNode/Lists/Publications.aspx#/publication/123</a>';
var href = ahref.split('"')[1];