我正在研究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}}标签?
答案 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);
}