You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JS正则表达式去除字符串中的内部嵌套div标签?

移除嵌套<div>标签的JS正则方案

针对你给出的场景,这里提供几种JavaScript正则实现方式:

1. 单一嵌套场景适配(匹配示例结构)

直接定位特定嵌套结构,将内部的<div>和</div>替换为空格,保留最外层标签:

const original = 'If there would be more <div>matches<div>in</div> string</div>, you will merge them to one';
const result = original.replace(/(<div>)(.*?)<div>(.*?)<\/div>(.*?)(<\/div>)/, '$1$2 $3 $4$5');
// 输出结果:If there would be more <div>matches in string</div>, you will merge them to one

2. 多层嵌套循环替换

如果存在多层嵌套的<div>,可以通过循环匹配替换,直到消除所有嵌套标签:

function flattenNestedDivs(str) {
  const regex = /<div>(.*?)<div>(.*?)<\/div>(.*?)<\/div>/s;
  while (regex.test(str)) {
    str = str.replace(regex, '<div>$1 $2 $3</div>');
  }
  return str;
}

const result = flattenNestedDivs(original);

3. 计数法精准保留最外层标签

通过统计标签总数,仅保留第一个<div>和最后一个</div>,其余标签替换为空格:

const original = 'If there would be more <div>matches<div>in</div> string</div>, you will merge them to one';
let tagCount = 0;
const totalOpens = (original.match(/<div>/g) || []).length;
const result = original.replace(/<\/?div>/g, match => {
  tagCount++;
  if (match === '<div>' && tagCount === 1) return match;
  if (match === '</div>' && tagCount === totalOpens * 2) return match;
  return ' ';
});

注意:正则处理HTML存在天然局限性,若涉及带属性的<div>(如<div class="demo">)或极复杂的嵌套结构,建议使用DOM API处理:创建临时DOM元素插入目标字符串,提取所有文本内容后重新包裹最外层<div>。

内容的提问来源于stack exchange,提问作者Vlad B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:36:21