JavaScript如何分割包含HTML标签的字符串以获取指定格式数组
解决方案
你原有代码的问题在于正则表达式匹配规则错误,且没有设置捕获组保留匹配到的标签内容,按以下方式实现即可得到预期结果:
实现代码
const strin = 'test <br><span>test</span> <div>aa</div>8'; const result = strin.split(/(<[^>]+>)/g) .filter(item => item.trim() !== ''); console.log(result); // 输出:['test', '<br>', '<span>test</span>', '<div>aa</div>', '8']
实现说明
- 正则
/<[^>]+>/g可以全局匹配完整的HTML标签:以<开头,中间匹配任意多个非>字符,最后以>结尾 - 给正则套上括号形成捕获组后,使用
split方法分割字符串时,捕获组匹配到的标签内容会被保留在结果数组的对应位置 - 最后调用
filter方法过滤掉分割产生的空字符串、纯空白字符的冗余项,即可得到预期的输出结果
内容的提问来源于stack exchange,提问作者Asking
相关产品推荐
相关产品推荐

