想要模拟微博的网页显示中的 @用户名 和话题 #话题标题# 用不同颜色高亮,我自己想的是 用@ 和用户名后面的空格作为标记,用js的正则就能从一句话中截取出想要的 “@用户名” 这个字符串,再高亮。 话题同理,用两个#作为标记从一句话中截取出想要的 “#话题标题#”,并高亮。可是我不会用js的正则,不会写,请高手教我。自己写了段,可是是错的。function manageTopicTitle(str){ var res = /^[^#\]#*$/; var reg = new RegExp(res); alert("oopp"); if(reg.test(str)){ test = str; return test; }else{ $.each(str.match(/[^#]+(?=\#)/g), function(i, word) { str = str.replace('#'+word+'#', '#'+word+'#'); }); test = str; return test; }}
这个功能的实现 比较笨点的 可以不用正则var _str = $("xx").html(), _key_word = "xxx", _al = _str.split( _key_word );_str = _al.join("" + _key_word + "");
function replaceStr(idxList,str){ var strList = str.split("") for (var i = 0; i < idxList.length; i++) { var [startNum, endNum] = list[i] if (startNum == endNum - 1) { strList[startNum] = `<span style="color:blue;">${str[startNum]}</span>` } else { strList[startNum] = `<span style="color:blue;">${str[startNum]}` strList[endNum - 1] = `${str[endNum-1]}</span>` } } return strList.join("");}var list = [ [0,3], [5,8]];replaceStr(list,"xxxxxxxxxxxxxxxxxxxxxxxxxxxx")