就是分享下自己的解题思路,很基础的写法,适合像我一样的新手看看,比较能看懂
为了能通过全部测试案例,也是写了好久,有太多种情况了:前后空格(可以trim函数)、不符合条件就照常返回(写个正则判断下就好)、多个可用链接(正则写的好,用起来没烦恼,我的正则也是从题解里抄来的,一开始不能理解为什么com|cn要好几次,后面看到测试案例就懂了,g当然是为了找到多个可用链接了)
反正别人的题解可以借鉴一下一些自己还不熟悉的部分,比如我不太会难的正则表达式,就借鉴了一下,其他部分也没啥难点,遇bug解决bug就好,好事多磨!
// 获取文本内容
var div = document.getElementById('jsContainer')
var text = div.innerText.trim()
// 选择正确的正则表达式
// 通常情况下的符合条件的正则表达式
var reg = new RegExp(/(https?:\\/\\/)?(www\\.\\w+(\\.(com|cn))*([?]\\w+=\\w*(&\\w+=\\w*)*)?(#\\w+)?)/g)
// www.开头的正则表达式,等等要替换http://www.XXXXXX
var reg1 = new RegExp(/^(www\\.)/)
// 如果不符合上述格式就不做任何操作
if(!reg.test(text)){
return
}
// 提取相关链接
text = text.match(reg)
var str = ''
for(let i =0;i<text.length;i++){
// 先把不符合的格式转换为统一合格的格式
if(reg1.test(text[i])){
// 要接受replace的返回值
let text1 = text[i].replace('www.','http://www.')
str += `<a target=\"_blank\" href=\"${text1}\">${text[i]}</a>` div.innerHTML = str
}
else{
str += `<a target=\"_blank\" href=\"${text[i]}\">${text[i]}</a>` div.innerHTML = str
}
}
}