首页 > 文章列表 > 如何使用正则表达式捕获完整的 script 标签内容?

如何使用正则表达式捕获完整的 script 标签内容?

153 2025-02-03

如何使用正则表达式捕获完整的 script 标签内容?

正则表达式如何捕获完整的 script 标签内容

本文探讨了如何使用正则表达式从 PHP 文件中提取 script 标签之间的内容。对于以下 PHP 文件:

<script src="static/js/jsencrypt.js?v=<?= WEB_VERSION ?>"></script>
<script src="static/js/jquery.form.js?v=<?= WEB_VERSION ?>"></script>
<script type="text/javascript">
    var a = 1;
    var b = 2;
</script>

对于最后一个 script 标签,我们需要通过正则表达式获取中间内容(例如变量声明)。

此前尝试的正则表达式 /(&lt;scriptb[^&gt;]*&gt;)([sS]*?)(&lt;/script&gt;)/gm 无法处理包含特殊字符(例如大于号 >)的属性,因此导致匹配错误。

解决方案是使用一个更高级的正则表达式,将属性部分分为多个组:

/(&lt;scriptb([^&quot;&lt;&gt;]+|&quot;[^&quot;]*&quot;)*&gt;)([sS]*?)(&lt;/script&gt;)/g

这个正则表达式将:

  1. 匹配 <script> 标签开始标记,包括属性(([^&quot;&lt;&gt;]+|&quot;[^&quot;]*&quot;)* 匹配属性)。
  2. 匹配 <script> 标签之间的内容([sS]*? 匹配换行符和任何其他字符)。
  3. 匹配 <script> 标签结束标记。

使用此正则表达式,我们可以可靠地捕获到目标脚本内容。

来源:1731307233