Javascript 用HTML中的链接替换URL

Javascript 用HTML中的链接替换URL,javascript,html,regex,Javascript,Html,Regex,我有一些HTML即将发布: <img src="http://www.example.com/image.jpg" /> <a href="http://www.example.com">Example.com</a> http://www.example.com 问题是它还改变了img和a标签: <img src="<a href="http://www.example.com/image.jpg">http://www.example.

我有一些HTML即将发布:

<img src="http://www.example.com/image.jpg" />
<a href="http://www.example.com">Example.com</a>
http://www.example.com
问题是它还改变了img和a标签:

<img src="<a href="http://www.example.com/image.jpg">http://www.example.com/image.jpg</a>" />
<a href="<a href="http://www.example.com">http://www.example.com</a>">Example.com</a>
<a href="http://www.example.com">http://www.example.com</a>

“>Example.com

有没有什么想法可以在不解析HTML的情况下快速处理这个问题?

使用正则表达式进行HTML处理会引发类似的错误,而不是尝试将正则表达式与dom处理结合使用,比如

var字符串class='1〕\
\
http://www.example.com';
变量$tmp=$(''{
html:string
});
var exp=/(\b(https?| ftp | file):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/i;
$tmp.contents().contents().addBack().each(函数()){
if(this.nodeType==Node.TEXT\u Node&&exp.test(this.nodeValue)){
$(this).replaceWith(function(){
返回$(''){
html:this.nodeValue.replace(exp“”)
}).contents()
})
}
});
var processed=$tmp.html();
snippet.log(已处理)

我最终遍历了HTML。这不是最快的解决方案,但很有效:

$(id).find('*').each(function(k,v)
{
    if (v.nodeName == 'A')
    {
    // do stuff 
    }
}

正则表达式应该做的只是确保它不会以引号开始和结束。我只想避免对每个块解析HTML。这会大大降低速度。@user1780407我想接下来的问题是你希望结果有多准确。。。。将字符串与正则表达式一起使用,规则非常严格,无法得到正确答案
$(id).find('*').each(function(k,v)
{
    if (v.nodeName == 'A')
    {
    // do stuff 
    }
}