我正在尝试从这两种类型的网址中获取网址和链接文字:
<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次或更多次”。
我做错了什么?
答案 0 :(得分:3)
你的表达说“找一个报价零次或多次;”
使用:
text = text.replace(/<a href="([^"]*)"[^>]*>(.*?)<\/a>/gim, "[$3]($1)");
答案 1 :(得分: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