javascript正则表达式链接未链接的URL

时间:2014-05-31 14:52:03

标签: javascript regex string url replace

我正在努力寻找合适的正则表达式,将URL转换为字符串中的html链接。 此字符串也可以具有正确的链接,而不仅仅是获取未链接的元素。

字符串示例:

<p>lorem ipsum <a href="http://www.example.com">dolor</a> sit amet</p> 
<p>https://www.mysite.com</p>

我正在使用此代码

<script>
var exp = /([^"]\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;

text.replace(exp,'<a href="$1" target="_blank">$1</a>');
</script>

但也需要&#34;&gt;&#34; P元素。

任何人都可以帮我吗?感谢

2 个答案:

答案 0 :(得分:0)

许多评论者都提出了很好的观点。这是一个常见的需求,@ ridgerunner的答案和链接可能很有用。因为这里没有真正的背景,即。您需要在给定页面上执行此操作多少次,内容输入的大小等等,一个简单的方法可能如下(其中考虑了前面的字符,如引号):

http://jsbin.com/vunene/1/

var re = /([^"])(https?:\/\/[a-zA-Z0-9\.\-\/]+(?:\?[a-zA-Z0-9=\&]+)?(?:#[\w]+)?)/gi, 
    str = document.getElementById('input').innerHTML,
    subst = '$1<a href="$2" target="_blank">$2</a>'; 

var result = str.replace(re, subst);

您还可以在其他答案中找到,取决于您的计划尝试执行的操作(输入大小,速度要求,频率),使用HTML解析器获取内容或直接定位特定节点如果事先已知,那么您只需提取要解析的文本,可能是比使用正则表达式更好的选择。

这也不是匹配网址的最优化/最佳正则表达式;但我也尝试过允许查询字符串,路径和哈希位置。您的里程可能会有所不同。

答案 1 :(得分:0)

我最终使用了一个名为Autolinker的小脚本,可以完成所有+有趣的选项。此页面中的正则表达式与某些网址不匹配