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.2k
1 个回答

别用 replace ,用 split

const tit = 'abdfjijABaja2324'
const sp = 'ab'
const reg = new RegExp('(' + sp + ')', 'gi')
tit.split(reg)
    .filter(Boolean) // 过滤空值
    .map(item => `<span class="s-name">${item}</span>`) // 重组字符串
    .join('') // 数组合并字符串
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题