Javascript 将url替换为链接,但添加一个

Javascript 将url替换为链接,但添加一个,javascript,jquery,url,hyperlink,Javascript,Jquery,Url,Hyperlink,在可编辑的iframe中,我使用链接替换普通URL,这要归功于以下正则表达式: function linkify(text) { var regex = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*/g; return text.replace(regex,"<a href='$&

在可编辑的iframe中,我使用链接替换普通URL,这要归功于以下正则表达式:

function linkify(text) {
    var regex = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*/g;
    return text.replace(regex,"<a href='$&'>$&</a>");
}

var content = linkify($('.div').html());
函数链接(文本){
var regex=/(http | https | ftp)\:\/[a-zA-Z0-9\-.]+.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/([a-zA-Z0-9\-.\.\,'/\\\\+%$\\\\\$\\=.]*/g;
返回文本。替换(regex,“”);
}
var content=linkify($('.div').html());
我的问题是,当我试图“链接”一个包含链接的字符串时,它会创建一个如下的怪物:

<a href="&lt;a href='http://google.com'&gt;http://google.com&lt;/a&gt;"></a><a href="http://google.com">http://google.com</a>

我认为如果我迭代DOM而不是分析html字符串,这个问题可以解决,但是在尝试之前,我想在这里问一下是否有人有任何想法


谢谢

我遇到了一个类似的问题,通过首先剥离html标记解决了这个问题:

function strip_tags(str, allow) {
allow = (((allow || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');

var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
var commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allow.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
功能条标签(str,allow){
allow=(((allow | |“”)+).toLowerCase().match(//g)| |[]).join(“”);
变量标记=/]*>/gi;
var commentsAndPhpTags=/|/gi;
返回str.replace(commentsAndPhpTags.)。replace(标记,函数($0,$1){
返回allow.indexOf(“”)>-1?$0:“”;
});
}
然后运行urlify函数:

function urlify(text) {
var exp = /(\b(http):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp,"<a href='$1'>$1</a>");
}
函数urlify(文本){ var exp=/(\b(http):\/\/[-A-Z0-9+&@#\/%?=~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig; 返回文本。替换(exp,“”); }
请看我的小提琴来试一试:

您已经想到了正确的解决方案:逐个查看DOM。您仍然可以使用正则表达式来识别何时有一个应该链接的普通URL,但您需要能够识别它何时已经是一个链接。我认为迭代DOM的链接是正确的。幸运的是,DOM为您提供了一个很好的节点列表,名为
document。links
建议策略:(1)查找现有链接,记住并替换为占位符;(2) 链接化;(3) 用记住的链接替换占位符。