replace目标替换,怎么让剩余的也替换掉?

const tit = 'abdfjijABaja2324'
const sp = 'ab'
const reg = new RegExp('(' + sp + ')', 'gi')
return tit.replace(reg, '<span class="s-name">$1</span>')

结果为:
<span class="s-name">ab</span>dfjij<span class="s-name">AB</span>aja2324

想实现结果:
<span class="s-name">ab</span><span>dfjij</span><span class="s-name">AB</span><span>aja2324</span>

阅读 1.5k
3 个回答
const tit = 'abdfjijABaja2324'
const sp = 'ab'
const reg = new RegExp('(' + sp + ')', 'gi')
const list = tit.split(reg)

return list.map(item => {
  if (!item) return
  
  if (reg.test(item)) {
    return `<span class="s-name">${item}</span>`
  } 
  
  return `<span>${item}</span>`
}).join('')
const tit = 'abdfjijABaja2324'
const sp = 'ab'
const reg = new RegExp('(' + sp + ')', 'gi')
return tit.replace(reg, '<span class="s-name">$1</span>').replace(/((?<=>)|^)([^<>]+?)((?=<)|$)(?!<\/)/g, '<span>$&</span>') 
const tit = 'abdfjijABaja2324'
const sp = 'ab'
const reg = new RegExp('(' + sp + ')|(.+?)(?=' + sp + '|$)', 'gi')
return tit.replace(reg,function(m,g1){return '<span'+(g1?' class="s-name"':'')+'>'+m+'</span>'})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题