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

如何使用正则表达式匹配script标签与stylesheet类型的link标签

解决匹配script标签与stylesheet类型link标签的正则问题

首先,你当前的link标签正则只匹配了**完全是<link rel="stylesheet">**这种极简形式的标签,但实际场景里stylesheet类型的link标签往往会附带href、media等其他属性,所以需要调整正则来兼容这种灵活的标签结构。

修正后的正则表达式

var re = /<(script\b[^>]*>([\s\S]*?)<\/script>|link\b[^>]*rel="stylesheet"[^>]*>)/gm;

调整逻辑说明

  • script标签部分:保留了你原本的匹配逻辑,既能捕获外部引用的script标签,也能匹配内联脚本的script标签。
  • link标签部分:
    • link\b:确保匹配的是link标签,避免和其他类似标签混淆
    • [^>]*:匹配rel属性之前的任意属性(比如href、media等)
    • rel="stylesheet":精准锁定stylesheet类型的rel属性
    • [^>]*>:匹配rel属性之后的剩余属性,直到标签闭合

测试验证

用你提供的测试文本:

<link rel="preload" href="fonts/roboto-v27-latin/roboto-v27-latin-700.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="css/site.css" as="style"> <link rel="stylesheet" href="css/site.css" media="screen"> <script src="plugins/glider-js/glider.min.js"></script>

这个正则会成功匹配到两个目标标签:

  1. 转义后的stylesheet link标签:&lt;link rel=&quot;stylesheet&quot; href=&quot;css/site.css&quot; media=&quot;screen&quot;&gt;
  2. 转义后的script标签:&lt;script src=&quot;plugins/glider-js/glider.min.js&quot;&gt;&lt;/script&gt;

额外优化提示

如果需要单独捕获stylesheet的href值,可以给对应部分添加捕获组,比如:

var re = /&lt;(script\b[^&gt;]*&gt;([\s\S]*?)&lt;\/script&gt;|link\b[^&gt;]*rel=&quot;stylesheet&quot;[^&gt;]*href=&quot;([^&quot;]+)&quot;[^&gt;]*&gt;)/gm;

这样第三个捕获组就能直接拿到stylesheet的URL路径了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:27:42