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

正则非捕获组拆分问题:匹配HTML标签名并移除标签内内容

问题分析

你原来的正则把<div整个当作了拆分分隔符,再加上捕获了标签名div,split方法会自动把捕获组的内容也塞进结果数组,这就导致<丢失,还多出了不需要的div项。

解决方案

方案一:直接拆分并移除标签名

调整正则,只匹配<和>之间的标签名,同时确保它后面紧跟&amp;gt;,这样split时会直接移除标签名,保留你需要的前后内容:

var str = '&amp;lt;div&amp;gt; div';
// 匹配&lt;和&gt;之间的单词字符,且后面必须紧跟&gt;(转义后的&amp;gt;)
var regex = /\w*(?=&amp;gt;)/g;
var arr = str.split(regex);
console.log(arr); // 输出: ["&amp;lt;", "&amp;gt; div"]

正则说明:

  • \w*:匹配任意长度的单词字符(对应HTML标签名)
  • (?=&amp;gt;):正向预查,确保匹配的内容后面紧接&amp;gt;,避免误匹配字符串中其他位置的单词

方案二:先替换再拆分(步骤更清晰)

如果需要更直观的操作流程,可以先把<标签名>替换为<>,再拆分字符串:

var str = '&amp;lt;div&amp;gt; div';
// 保留&amp;lt;,移除中间的标签名
var processedStr = str.replace(/(&amp;lt;)\w*(?=&amp;gt;)/g, '$1');
// 此时processedStr为 "&amp;lt;&amp;gt; div"
// 用正向预查拆分,确保&amp;gt;本身不被拆分
var arr = processedStr.split(/(?=&amp;gt;)/);
console.log(arr); // 输出: ["&amp;lt;", "&amp;gt; div"]

解释:

  • replace方法捕获了&amp;lt;,用$1把它放回结果,同时去掉中间的标签名
  • split(/(?=&amp;gt;)/)会在&amp;gt;的起始位置拆分,不会破坏&amp;gt;本身的完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:09:29