我需要替换HTML中的关键字,并在它们周围放一个跨度,以后将捕获单击事件。
我得到的是字符串格式的HTML,我尝试使用正则表达式将特定的字符串替换为跨度的字符串。一切正常,但问题是它与链接和其他标签匹配。因此,如果关键字匹配,它也会包围其中的某些部分。
我用来替换关键字的代码:
textToBeChanged = textToBeChanged.replace(new RegExp(keyword, 'ig'), keywordWrappedInSpan)
有没有一种方法可以扩展它,以便它在链接或其他标签中不会被替换?还是JQuery的某种方式?
答案 0 :(得分:1)
为达到预期效果,请在下面使用通过关键字test分割字符串的方法
工作代码示例
var str = '<div> test <a> test </a> </div>'
console.log(str.split('test').map(v => {
if(v.indexOf('<a>') === -1 && v.indexOf('</a>') === -1){
v = v + '<span>test</span>'
}else{
if(v.indexOf('<a>') !== -1){
v = v + 'test'
}
}
return v
}).join(''))