温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Replacing substrings that aren't substrings of specific tags
html javascript jquery

javascript - 替换不是特定标签的子字符串的子字符串

发布于 2020-03-27 10:18:50

我需要替换HTML中的关键字,并在它们周围放一个跨度,以后将捕获单击事件。

我得到的是字符串格式的HTML,我尝试使用正则表达式将特定的字符串替换为跨度的字符串。一切正常,但问题是它与链接和其他标签匹配。因此,如果关键字相匹配,它也会围绕这些部分。

我用来替换关键字的代码:

textToBeChanged = textToBeChanged.replace(new RegExp(keyword, 'ig'), keywordWrappedInSpan)

有没有一种方法可以扩展它,以便它在链接或其他标签中不会被替换?还是JQuery的某种方式?

查看更多

查看更多

提问者
Leon Csergity
被浏览
208
Naga Sai A 2019-07-03 21:13

为了达到预期的效果,请使用下面的通过关键字test分割字符串

  1. 用单词“ test”分割字符串
  2. 检查字符“”和“”
  3. 相应地用单词测试更新跨度

工作代码示例

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