演示: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 是一个不错的选择,依靠其他人尝试处理所有可能情况的工作。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!