完整匹配 <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> 标签中间部分的内容?例如,第三个 <script> 标签的内容如下:
var a = 1; var b = 2;
最初提出的正则表达式 /(<scriptb[^>]*>)([ss]*?)(</script>)/gm 仅能匹配 <script> 标签属性不包含 > 的情况。
要解决这个问题,可以使用以下修改后的正则表达式:
/(<scriptb([^"<>]+|"[^"]*")*>)([sS]*?)(</script>)/g
此正则表达式针对属性中包含引号的情况进行了修改,排除了引号干扰,从而能够匹配所有 <script> 标签中间部分的内容。