2014-03-12 63 views
0

因此,假設我有這個HTML鏈接。從JavaScript提取特定數據.getAttribute()

<a id="avId" href="http://www.whatever.com/user=74853380">Link</a> 

我有這個JavaScript

av = document.getElementById('avId').getAttribute('href') 

將返回:

"http://www.whatever.com/user=74853380" 

我如何提取74853380專門從生成的字符串?

回答

1

有幾種方法可以做到這一點。

1)使用substrindexOf以提取它

var str = "www.something.com/user=123123123"; 
str.substr(str.indexOf('=') + 1, str.length); 

2.)使用正則表達式

var str = var str = "www.something.com/user=123123123"; 
// You can make this more specific for your query string, hence the '=' and group 
str.match(/=(\d+)/)[1]; 

你也可以分割在=字符和取第二值所得到的陣列中。你最好的選擇可能是正則表達式,因爲它更強大。如果查詢字符串變得更加複雜,那麼分割字符或使用substrindexOf很可能會失敗。如果需要,正則表達式也可以捕獲多個組。

+0

謝謝你解決我的問題,它工作得很好! – Marian

+0

完全沒問題。很高興我可以幫助:) – Default

+0

如果讓我們說=而不是一個數字的末尾,我有一個詞?像「尼克」? – Marian

1

您可以使用正則表達式:

var exp = /\d+/; 
var str = "http://www.whatever.com/user=74853380"; 
console.log(str.match(exp)); 

說明:

/\ d +/ - 意思是 「一個或多個數字」

,當你需要找到另一種情況不止一個號碼

"http://www.whatever.com/user=74853380/question/123123123" 

您可以使用g標誌。

var exp = /\d+/g; 
var str = "http://www.whatever.com/user=74853380/question/123123123"; 
console.log(str.match(exp)); 

您可以play使用正則表達式

+0

這個工作得很好。因爲我需要另一個變量中的數字供以後使用,所以我可以執行'id = str.match(exp);' – Marian

+0

@Marian當然,你可以像var id = str.match(exp)[0] ; –

0

嗯,你可以split()它的一個襯墊的答案。

var x = parseInt(av.split("=")[1],10); //convert to int if needed 
+0

這不起作用,如果一個額外的參數在*'user'之前被傳遞*怎麼辦?兄弟抱歉。但是,雖然凌亂,你仍然可以拆分''user =「'而不是''=」' – user1596138

+1

那麼會有很多「假設」可能發生,答案可以相應調整。 –

+0

雖然這還不夠好。這不僅是可能的,它可能會遇到問題,而且這是一個糟糕的,容易出錯的解決方案。 我知道這個問題是可悲的哈哈,但仍然 – user1596138