正则如何完整匹配script标签的中间内容?

作者站长头像
站长
· 阅读数 18

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标签中间部分的内容,例如 第三个script标签内容为:

    var a = 1;
    var b = 2;

我自己写了的一段正则:/(<script\b[^>]*>)([\s\S]*?)(<\/script>)/gm这段正则只能匹配script标签属性不插入>的情况,如果script标签属性插入了>就会匹配错误。

回复
1个回答
avatar
test
2024-06-21

属性中含有引号就排除引号干扰

/(<script\b([^"<>]+|"[^"]*")*>)([\s\S]*?)(<\/script>)/g
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容