题解 | #替换链接#
替换链接
http://www.nowcoder.com/practice/4578a70b955848ff8e95c1f88c94c1ba
替换链接
function link() { let t = document.getElementById('jsContainer') let reg = /(https?:\/\/)?(www\.\w+(\.(com|cn))*([?]\w+=\w*(&\w+=\w*)*)?(#\w+)?)/g let textArr = [] // 1.识别所有以http://、https://或者www.开始的链接 textArr =t.innerHTML.match(reg)?Array.from(t.innerHTML.match(reg)): [] // 2.添加链接标签 textArr.forEach(item => { if (item.indexOf('www.') == 0) { t.innerHTML = t.innerHTML.replace(item, `<a href="http://${item}" target="_blank">${item}</a>`) } else { t.innerHTML = t.innerHTML.replace(item, `<a href="${item}" target="_blank">${item}</a>`) } }) }
示例
function test1() { var content = 'https'; var div = document.getElementById('jsContainer'); div.innerHTML = content; link(); var result = div.innerHTML === content; return result; } function test2() { var content = ' www.testhaha.com '; var div = document.getElementById('jsContainer'); div.innerHTML = content; link(); var aLink = div.getElementsByTagName('a') || []; var result = aLink.length === 1 && aLink[0].getAttribute('href') === 'http://www.testhaha.com' && aLink[0].getAttribute('target') === '_blank' && aLink[0].innerHTML === 'www.testhaha.com'; return result; } test1() test2()