2016-10-17 24 views
0

第三方工具我使用的是建立一個錨標記,像這樣..如何獲得字符串的href在Javascript

"<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

因此在reg exp中添加一個可選空間。麻生太郎看起來像是一個錯誤,如果它有一個領先的空間 – epascarello

+0

這裏回答=> http://stackoverflow.com/a/15926317/929902? –

+0

@epascarello是的,我同意,我已經向第三方報告過。如何爲無限可選空間添加豁免,我對正則表達式不熟悉。 –

回答

1

您可能希望使用*量詞,將「包括零的任意次數」合併到\s它將匹配空格,換行符等。

因此,使用\s+在需要空間,但可能有不止一個

並使用\s*其中一個空間是可選的,但可能有一些

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

我認爲這是最有用的,但它似乎並不奏效。 –

+1

nvm,我正在使用var reg = new RegExp(pattern,'i');創建模式,並因此需要逃離反斜槓字符,謝謝你,不同於我的標題,但確實最有用的答案 –

0

一個簡單/快速的答案是使用jQuery,建立標籤,並尋找href屬性。

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

我會盡量讓你的RegExp在一點。掛在緊...

而作爲promissed ......這裏的正則表達式

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])

+0

在問題中未標記jQuery。而「我會盡力[稍後回答]」沒有用。 –

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可能是有用的,如果你想擺脫它。

+0

謝謝,這是一個有用的方法,並沒有jQuery的運作良好。 –

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]; 
相關問題