2017-07-16 54 views
0

嗨我已经创建了如下的正则表达式功能添加链接到被传递一个字符串,函数看起来像这样:正则表达式提取链接处断裂斜线

function addLinks(str) { 
     return str.replace(RegExp('https://[^/\s]+' , 'g') , (match , p1) => '<a href="' + match + '">' + match + '</\a>'); 
    } 

现在,当我通过上述功能的一句话以下:

Go through codepens and make experiments folder -- https://codepen.io/pens/ 

我得到以下输出:

<li>Go through codepens and make experiments folder -- <a href="https://codepen.io">https://codepen.io</a>/pens/</li> 

最后的p艺术链接/pens/不会包含在链接中,为什么会发生这种情况,即使我已添加[^/\s]+

回答

1

你可以只尝试匹配直到击中空白字符:

function addLinks(str) { 
    return str.replace(RegExp('https://[^\s]+' , 'g') , (match , p1) => '<a href="' + match + '">' + match + '</\a>'); 
} 

这可能会实现,因为有效 URL中不能有空格在其中。当然,这个正则表达式会错过URL上的标记。

+0

+1,但看看这里的小提琴 - > https://jsfiddle.net/2ajzrfqb/,google.com之后的部分没有被选中。 :| –