这个问题不是简单的一个批量replace那么简单,要考虑到已经存在的超链接,不能将里面的文字再次替换为超链接,还有就是图片的alt属性,或者其他标签的title属性,里面的文字也不该被替换。
情景一:排除属性中的关键词
匹配的正则为:关键词[^<]*>,所以排除这个关键词的正则为:关键词?!([^<]*>)。
情景二:排除链接中的关键词
匹配的正则为:关键词[^<]*<\/a>,所以排除这个关键词的正则为:关键词?!([^<]*<\/a>)。
-------整合两种情况的结果为:var reg=/关键词(?!([^<]*>)|([^<]*<\/a>))/ig;-----
1.关键字要替换成的内容 这里加红加粗
let replaceString = '<span style="color: #fd2701;font-weight: 900;font-size: 18px;" class="search-item">' + keyWords + "</span>";
2.正则
let reg=new RegExp(keyWords+"(?!([^<]*>)|([^<]*<\/a>))","g");
3.替换
c为要进行搜索的文本内容
c = c.toString().replace(reg,replaceString);