1

我正在尝试从这两种类型的 URL 中获取 URL 和链接文本:

<a href="http://www.example.com">Example</a>
<a href="http://www.example.com" rel="nofollow">Example</a>

起初我有这个:

text = text.replace(/<a href="(.*)">(.*)<\/a>/gim, "[$2]($1)");

但这包括rel="nofollow"$2第二个例子中。我将其更改为:

text = text.replace(/<a href="(.*)"( rel=".*"{0,})>(.*)<\/a>/gim, "[$3]($1)");

现在,rel="nofollow"链接是完美的,但第一个示例根本不匹配。

{0,}应该表示“匹配rel=".*"0 次或多次”。

我究竟做错了什么?

4

2 回答 2

3

你的表达说“找到一个报价零次或多次;)

使用它:

text = text.replace(/<a href="([^"]*)"[^>]*>(.*?)<\/a>/gim, "[$3]($1)"); 
于 2013-07-01T12:02:44.853 回答
1

jQuery解决方案:

var text_html_string = '<a href="http://www.example.com">Example</a>';
$(text_html_string).attr('href'); // http://www.example.com
$(text_html_string).text(); // Example

不使用 jQuery 进行编辑

var d = document.createElement('div');
d.innerHTML = '<a href="http://www.example.com">Example</a>';
d.getElementsByTagName('a')[0].href; // http://www.example.com
于 2013-07-01T12:04:48.193 回答