Linkify / Clickable Text-URL,但忽略那些已经包含在“a href”中的URL

时间:2013-12-06 09:08:51

标签: javascript jquery linkify

我正在研究jQuery中的链接化脚本,其唯一目的是获取textarea中的所有URL并将其更改为可单击的链接,换句话说,将a href标记包裹在它们周围。

我正在使用的脚本实际上工作正常,但是当链接添加“正确的”HTML方式并且周围带有a href标记时,问题就开始了。
请转到jsFiddle链接查看我的脚本。

例如,如果我在我的textarea中写道:<a href=“http://google.com”>visualize.com</a>它会变成:<a href="<a href='http://google.com' target=‘_blank'>http://google.com</a>visualize.com</a>哪个原因不起作用并弄乱一切。

如何仅对部分( http:// www。)应用关联,而不应用链接已包含在{{ 1}}标签?

1 个答案:

答案 0 :(得分:1)

见:

基本上它首先解析标签之间的文本(但不在&lt; a&gt;之间),然后用链接正则表达式模式替换txt。

function replaceTxtNotInA(html, regex, replace) {

    //just to make the txt parse easily, without (start) or (ends) issue
    html = '>' + html + '<';

    //parse txt between > and < but not follow with</a
    html = html.replace(/>([^<>]+)(?!<\/a)</g, function(match, txt) {

        //now replace the txt
        return '>' + txt.replace(regex, replace) + '<';
    });

    //remove the head > and tail <
    return html.substring(1, html.length - 1);
}

http://jsfiddle.net/rooseve/4qa5Z/1/