js正则截取字符串,用以高亮,怎么实现?

想要模拟微博的网页显示中的 @用户名 和话题 #话题标题# 用不同颜色高亮,我自己想的是 用@ 和用户名后面的空格作为标记,用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; }}
最新回答
待在绿匣里的猫

2024-05-02 01:12:32

这个功能的实现 比较笨点的 可以不用正则var _str = $("xx").html(), _key_word = "xxx", _al = _str.split( _key_word );_str = _al.join("" + _key_word + "");
他年词笔隐

2024-05-02 01:11:13

楼上的这种也可以撒,其实你这些数据正常的话都是动态的,后台拼接成html格式的就行了。
宾狗

2024-05-02 01:13:45

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")