演示: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以一个文件结尾时,它看起来像是this。
我不知道如何开始解决这个问题。关于我应该查看哪些资源,有什么建议吗?
使用更复杂的正则表达式来查找URL,例如在这个答案中,将解决这两个问题。
为了解释为什么会出现这些问题,问题1是因为正则表达式要求URL以http://或https://开头;部分CCD_ 1不与问号分组以使其可选。问题2的原因是路径允许的字符不包括减号
使用预先构建的复杂正则表达式来处理多种类型的URL是一个很好的选择,这取决于其他人试图处理所有可能情况的工作。