【发布时间】:2012-12-02 12:58:00
【问题描述】:
所以我试图用锚标记中的 URL 替换我页面上多个元素中的所有文本 URL:
http://google.com => <a target="_blank" href="http://google.com">http://google.com</a>
var titles = document.querySelectorAll(".title");
var l = titles.length, i, title;
for(i = 0; i < l; i++) {
console.log('foo')
title = titles[i];
title.innerHTML = title.innerHTML.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a target='_blank' href='$1'>$1</a>")
}
问题是在一些 AJAX 回来后我必须再次运行正则表达式,并且它将锚标签重新应用到锚标签的 href="" 属性中的 url!所以我需要在这个正则表达式中添加一个负前瞻,以防止它匹配任何带有尾随 " 或 ' 的网址。
匹配http://google.com,但不匹配"http://google.com"
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
【问题讨论】:
标签: javascript regex negative-lookahead