思路:正则表达式。首先使用全局正则表达式regex表示所有以http://、https://或者www.开始的链接,然后使用replace进行替换这些链接即可。重点在于regex的编写和replace的编写!!!
<script type="text/javascript"> // 填写JavaScript function link() { var div=document.getElementById('jsContainer') // g表示全局 //表示正则表达式 var regex= /(http(s)?:\/\/|www\.)[\w\.\?=&#%]+/g var text=div.innerHTML //match是字符串匹配部分 后者函数是动态替换字符串 var res=text.replace(regex,function(match){ var linktext if(match.startsWith("www")) linktext="http://"+match else linktext=match return `<a href=${linktext} target="_blank">${match}</a>` }) div.innerHTML=res } link() </script>
总结:/(http(s)?:\/\/|www.)[\w\.\?=&#%]+/g表示所有以http://、https://或者www.开始的链接,其中\w表示字母数字下划线 [A-Za-z0-9_],而.表示匹配任意单个字符?表示匹配0次或者1次/表示正则表达式,故其均需要加转义字符,g表示全局正则表达式。str.replace(searchValue, newValue)表示将字符串str中的旧字符串searchValue替换为新字符串newValue,其中第一个参数可以为正则表达式,如果是全局正则表达式则替换所有,反之则只替换第一个,其中第二个参数可以为函数,function(match){},其表示动态替换,match指的是当前与正则表达式匹配的内容。str.startsWith()是字符串函数,用于判断字符串是否是以某某开头。let match=new RegExp(p,'g')也是一种创建全局正则表达式的方法。注意顺序,string.match(regexp)方法和regexp.test(string)方法,前后颠倒。target="_blank"表示用于在新的浏览器标签或窗口中打开链接。