如何改善这个正则表达式

时间:2014-12-02 07:12:48

标签: javascript regex

我有一个正则表达式,可以在div的innerHTML中找到<a href="">的一部分。

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

并想摆脱第二行,.split函数。有没有办法做到这一点?理想情况下,我也希望将标签保留在div之前:

hrefs总是这样(只有数字可能会有变化):

href="#div46" 
href="#div47"
...

3 个答案:

答案 0 :(得分:3)

您可以使用:

var b = this.innerHTML.match(/href=(['"])(.+?)\1/);
window.location.assign( b[2] ); // #div46
  • 删除g标志以获取结果数组中的所有匹配组。

答案 1 :(得分:1)

var val = $("a").attr("href");
var myString = val.substr(val.indexOf("#") + 1)
alert(myString);

Try this

答案 2 :(得分: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.