求助:正则表达式移除HTML标签并在相邻div间添加空格
解决方案
可以分两步处理:先给相邻的</div>和<div>之间插入空格,再移除所有HTML标签,就能同时满足你的需求。
具体实现
先处理相邻div标签的拼接
用正则匹配连续的</div><div>,替换为带空格的</div> <div>:const htmlStr = 'This <b>is</b> <div>a</div><div>test</div>'; // 第一步:给相邻的闭合div和开启div之间加空格 const withSpace = htmlStr.replace(/<\/div><div>/g, '</div> <div>');移除所有HTML标签
用简化后的正则移除所有标签(和你原逻辑一致,去掉了不必要的分组):// 第二步:清除所有HTML标签 const result = withSpace.replace(/<[^>]+>/gi, ''); console.log(result); // 输出:This is a test
简化链式写法
如果想合并成一行代码:
const result = htmlStr.replace(/<\/div><div>/g, '</div> <div>').replace(/<[^>]+>/gi, '');
逻辑说明
- 必须先处理相邻div:如果直接先移除标签,
</div><div>会直接被清空,两个div的内容会直接连在一起,无法插入空格。提前插入空格后,移除标签时空格会被保留。 - 正则里的
g修饰符确保匹配所有连续出现的</div><div>,不会只处理第一处。
内容的提问来源于stack exchange,提问作者Aaron.Bidwell
相关产品推荐
相关产品推荐

