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

如何编写正则反向匹配,仅保留HTML中script标签及内部内容?

原正则的问题
  • 否定断言逻辑错误:你在每个字符位置校验后续是否存在完整script块,只有script块起始位置会被排除,其他位置都会被命中,再加上你加了行首^、行尾$锚点,VS Code默认正则为每行独立匹配,跨行内容直接无法正确识别。
  • 跨行适配错误:你将跨行匹配逻辑放在否定断言内部,VS Code使用的JavaScript正则引擎,无法正确识别嵌套在断言内的跨行匹配逻辑,自然达不到预期效果。
解决方案

分两种场景适配你的需求:

场景1:仅需删除script标签保留其余内容

直接用VS Code替换功能即可,操作更简单:

  • 查找内容填:<script>(.|\n)*?</script>
  • 替换内容留空,点击全部替换即可完成需求。

场景2:需要直接选中除script标签及内部内容外的所有内容

使用如下正则即可:

(^|(?<=<\/script>))[\s\S]*?(?=<script>|$)

逻辑说明:

  • (^|(?<=<\/script>)):匹配起始位置为全文开头,或是</script>结束的位置
  • [\s\S]*?:非贪婪匹配任意字符,包括换行符
  • (?=<script>|$):匹配终止位置为<script>开始的位置,或是全文结束的位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:04