我正在努力寻找合适的正则表达式,将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元素。
任何人都可以帮我吗?感谢
答案 0 :(得分:0)
许多评论者都提出了很好的观点。这是一个常见的需求,@ ridgerunner的答案和链接可能很有用。因为这里没有真正的背景,即。您需要在给定页面上执行此操作多少次,内容输入的大小等等,一个简单的方法可能如下(其中考虑了前面的字符,如引号):
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的小脚本,可以完成所有+有趣的选项。此页面中的正则表达式与某些网址不匹配