javascript - 替换不是特定标签子串的子串
问题描述
我需要替换 HTML 中的关键词并在它们周围放置一个跨度,以便稍后捕获点击事件。
我得到了字符串格式的 HTML,我尝试的是使用正则表达式将特定字符串替换为由 span 包围的字符串。这一切都很好,但问题是它与链接和其他标签匹配。因此,如果关键字在其中匹配,它也会包围其中的一部分。
我用来替换关键字的代码:
textToBeChanged = textToBeChanged.replace(new RegExp(keyword, 'ig'), keywordWrappedInSpan)
有没有办法扩展它,以便如果它在链接或其他标签中它不会替换它?或者也许用 JQuery 某种方式?
解决方案
为了达到预期的结果,请使用下面的通过关键字测试拆分字符串
- 按单词拆分字符串 - 'test'
- 检查字符 '' 和 ''
- 相应地用 word test 更新 span
工作代码示例
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(''))
codepen - https://codepen.io/nagasai/pen/rEvvGV?editors=1010
推荐阅读
- html - 标题属性未显示完整内容
- java - 服务意图 getaction 和 getextra 返回 null
- java - Micronaut:执行 Mockito 测试时未调用异常处理程序
- php - Laravel 查询生成器是否在不分配的情况下保存查询?
- python - 获取外键表drf django的所有值
- c# - 如何验证传递给 NetworkCredential 构造函数以用于 EWS 的凭据?
- elasticsearch - 我正在搜索我们使用 id English 添加到弹性搜索同义词列表中的所有单词的英语词库。我在哪里可以得到它?
- project-reactor - 在r2dbc中按顺序执行两个查询的正确方法
- c - 使用相同的指针指向具有不同参数的函数
- python - 使用 tkcalendar 启动 exe 时出现错误消息