如何从纯文本URL中检测和转换URL图像和视频?

时间:2012-06-09 13:09:28

标签: javascript jquery html regex image

您好我需要检测并转换来自纯文本网址的网址图片和视频

HTML

<div id="content-url">
 Hello World<br>
 http://www.goalterest.com/  <br>
 http://www.esotech.org/wp-content/uploads/2011/12/jquery_logo.png
 http://www.esotech.org/wp-content/uploads
</div>

Jquery的

var urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var photoRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]).(?:jpg|gif|png)/ig;

  var url_url= $('#content-url').html().match(urlRegex);
var url_photo= $('#content-url').html().match(photoRegex);

  var convert_url='<a href="'+url_url+'">'+url_url+'</a>';
var convert_photo='<img src="'+url_photo+'" width="150" height="150" alt="Nba">';
$('#content-url').append(convert_url);
$('#content-url').append(convert_photo);

这里演示 http://jsfiddle.net/nqVJc/3/

在演示中我得到了检测并转换为网址和照片的方法,但问题是当有多个网址时网址没有分开

2 个答案:

答案 0 :(得分:2)

您没有遍历匹配的元素:

$.each( url_url, function(i,value){
   var convert_url='<a href="'+url_url[i]+'">'+url_url[i]+'</a>';
   var convert_photo='<img src="'+url_photo[i]+'" width="150" height="150" alt="Nba">';
   $('#content-url').append(convert_url,convert_photo)
});

这是 DEMO

要删除匹配的网址,您需要在$.each之前添加此行:

$('#content-url').html( $('#content-url').html().replace(urlRegex,''));

//$.each goes here

答案 1 :(得分:0)

你的正则表达式可以改进。 URI.js提供URI.withinString()来提取网址。这里使用的正则表达式是gruber revised

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig