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

时间:2019-07-02 20:03:35

标签: javascript jquery html

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

为达到预期效果,请在下面使用通过关键字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