2014-12-02 94 views
1

我有一個正則表達式在div的innerHTML內找到<a href="">的部分。如何改進此正則表達式

 var b = this.innerHTML.match(/href="([^\'\"]+)/g); 
     var c = b[0].split('#')[1]; 
     window.location.assign('#'+c); 

並希望擺脫第二行的.split函數。有沒有辦法做到這一點?理想情況下,我想保持的主題標籤的DIV之前,太:

的HREF中的八方通這樣的(只數如有更改):

href="#div46" 
href="#div47" 
... 
+2

[不解析與正則表達式的HTML!(HTTP://計算器。 com/a/1732454/418066) – Biffen 2014-12-02 07:15:22

+0

@anubhava這給我undefined – baao 2014-12-02 07:17:17

+0

@vks我不明白...? – baao 2014-12-02 07:17:41

回答

3

您可以使用:

var b = this.innerHTML.match(/href=(['"])(.+?)\1/); 
window.location.assign(b[2]); // #div46 
  • 刪除g標誌以獲得結果數組中的所有匹配組。
1
var val = $("a").attr("href"); 
var myString = val.substr(val.indexOf("#") + 1) 
alert(myString); 

Try this

1

你並不需要一個正則表達式:

// you can extract all fragments of an url like this: 

var linkElement = document.createElement('a'); 
linkElement.href = "http://example.com:3000/pathname/?search=test#hash"; 

linkElement.protocol; // => "http:" 
linkElement.hostname; // => "example.com" 
linkElement.port;  // => "3000" 
linkElement.pathname; // => "/pathname/" 
linkElement.search; // => "?search=test" 
linkElement.hash;  // => "#hash" 
linkElement.host;  // => "example.com:3000" 

// in case you already have a link, you'll don't have to create it - just 
// use the element and ask for hash - and you are done.