我有两个正则表达式,每个表达式都可以找到http://www.google.com之类的网址或https://www.google.com/images/srpr/logo11w.png之类的图片链接。
这个网址可以找到http://www.google.com
等网址/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
此处查找带有https://www.google.com/images/srpr/logo11w.png
等图片扩展名的网址/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])+\.(?:jpe?g|gif|png)/ig;
我有一个查看文字的功能,并将<a href="...">...</a>
和<img src="...">
替换为以下网址:
function replaceURLWithHTMLLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var exp2 = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])+\.(?:jpe?g|gif|png)/ig;
var links = text.replace(exp,"<a href='$1' target='_blank'>$1</a>");
var images = links.replace(exp2, "<img src='$1' alt='$1'>");
return images;
}
问题是,如果我的文字包含图片网址,则会在第一次运行时找到该网址并将其替换为链接,然后替换第二部分中的部分链接,将其分解。
最好用这个小提琴解释:http://jsfiddle.net/BenedictLewis/m4H9B/2/
答案 0 :(得分:0)
使用预测来查找周围的引号
var exp = /((https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(?=([^"']*["'][^"']*["'])*[^"']*$)/ig;