用锚标记替换http链接

时间:2018-07-01 08:58:39

标签: javascript regex

所以我正在建立一个聊天客户端,在其中我通过json读取传入的消息。

但是,我希望能够将URL转换为可点击的锚定标记。我环顾四周,但还没有真正找到任何询问或得到答案的帖子。

这是我当前的代码:

if (json.type === 'message') {
    var val;  
    var str = json.data.text; //message-string
    var here  = str.match("([^\s]+)"); // match any word until space <---| merge
if (!here.search(/^http[s]?:\/\//)){ //if it contains http / https   <---| these?
    val = '<a href=\"' + here + "\"> [Link] </a>";        
}
    addMessage(json.data.author, val, json.data.color, new Date(json.data.time));
}
else {
    console.log('Hmm..., I\'ve never seen JSON like this:', json);
}

谢谢

1 个答案:

答案 0 :(得分:0)

您从未使用过val,但是立即使用replace可能会容易得多。您可能想要添加target="_blank"以确保链接在 new 窗口中打开,而不是替换聊天页面。 (由于沙箱操作,target="_blank"似乎无法在嵌入式代码段中运行,但可以在普通页面上运行)

const text = 'here is a message with a link to https://www.google.com and another link to https://stackoverflow.com';
const changedText = text.replace(
  /(https?:\/\/)([^ ]+)/g,
  '<a target="_blank" href="$&">$2</a>'
);
console.log(changedText);

document.body.innerHTML += changedText;