演示:http://jsfiddle.net/RH8f6/52/
$('document').ready(function(){
$('#content').each(function(){
var str = $(this).html();
var find_url = /(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?)/ig;
var find_email = /([\.\w]+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
var replaced_text = str.replace(find_url, "<a href='$1' target='_blank'>$1</a>").replace(find_email, '<a href="mailto:$1">$1</a>');
$(this).html(replaced_text);
});
});
我的正则表达式可以在文本中查找 URL(并将其转换为超链接),但以下两种情况除外:
1) 当 URL 以“www”开头时 2) 当 URL 以-a-file-path-that-looks-like-this 结尾时。
我不知道如何开始解决这个问题。关于我应该查看哪些资源有什么建议吗?
最佳答案
使用更复杂的正则表达式来查找 URL,例如 this answer将解决您的两个问题。
为了解释您遇到这些问题的原因,问题 1 是因为您的正则表达式要求 URL 以 http://或 https://开头; https?:\/\/
部分未与问号分组以使其可选。问题2的原因是路径允许的字符不包含减号。
使用预构建的复杂正则表达式来处理多种类型的 URL 是一个不错的选择,依靠其他人尝试处理所有可能情况的工作。
关于javascript - 使用正则表达式查找文本字符串中以 'www' 开头并以 'file-path' 结尾的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319721/