因此,我尝试将页面上多个元素中的所有文本 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!所以我需要向这个正则表达式添加一个否定的前瞻,以防止它匹配任何带有尾随的 url"
或'
.
匹配http://google.com
但不匹配"http://google.com"
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig