使用Regex和Javascript移除HTML标签并保留对应换行的实现方法
实现方案
你可以通过两步正则替换完成需求,逻辑如下:
- 先匹配所有带大括号/不带大括号的换行标签实体,统一替换为换行符
- 再匹配剩余所有HTML标签实体,直接删除即可
正则规则说明
- 匹配换行标签的正则:
/{?\s*<br\s*\/?>\s*}?/gi- 可同时匹配
{ <br /> }、<br>、<br/>等多种格式的换行标签 - 匹配到的内容统一替换为
\n保留换行效果
- 可同时匹配
- 匹配其余HTML标签的正则:
/<.*?>/gi- 非贪婪匹配所有
<开头、>结尾的标签实体,匹配后直接替换为空字符串即可
- 非贪婪匹配所有
代码示例
JavaScript 示例
const rawContent = '...some text { <br /> } { <br /> } ...more text\n...some text <strong>加粗文本</strong>' // 第一步:替换换行标签为换行符 let result = rawContent.replace(/{?\s*<br\s*\/?>\s*}?/gi, '\n') // 第二步:移除所有其他HTML标签 result = result.replace(/<.*?>/gi, '') console.log(result)
Python 示例
import re raw_content = '...some text { <br /> } { <br /> } ...more text\n...some text <strong>加粗文本</strong>' # 第一步:替换换行标签为换行符 result = re.sub(r'{?\s*<br\s*\/?>\s*}?', '\n', raw_content, flags=re.IGNORECASE) # 第二步:移除所有其他HTML标签 result = re.sub(r'<.*?>', '', result, flags=re.IGNORECASE) print(result)
注意事项
如果后端返回的是未转义的原生HTML标签(即直接是<br>、<strong>而非实体编码格式),只需要把正则里的<替换为<、>替换为>即可,替换逻辑不变。
内容的提问来源于stack exchange,提问作者Demian Sims
相关产品推荐
相关产品推荐

