第三方工具我正在使用构建一个锚标记,如此...
"<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>"
请帮忙
答案 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
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;
答案 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];