首页 > 解决方案 > 不能将目标属性添加到锚点

问题描述

我正在尝试将文本 URL 转换为可点击的 html 链接,一切正常,但我无法添加属性(目标)。我没有收到任何错误。
这是代码:

 let text= 'https://www.google.com';
 let exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
 let text1=text.replace(exp, "<a href='$1'>$1</a>");
 let exp2 =/(^|[^\/])(www\.[\S]+(\b|$))/gim;
 let message = text1.replace(exp2, '$1<a target="_blank" href="http://$2">$2</a>');

输出:<a href="https://www.google.com">https://www.google.com</a>

标签: javascriptregex

解决方案


不需要两次通行证。只需在初始替换中包含目标:

let text= 'https://www.google.com';
let exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
let text1=text.replace(exp, '<a target="_blank" href="$1">$1</a>');
// -------------------------^---^^^^^^^^^^^^^^^------^--^-------^
console.log(text1);

由于您似乎想要双引号_blank(没有必要),我将替换字符串周围的引号更改为'(并使用"around href)。


推荐阅读