
使用正则表达式完整匹配 script 标签内容
问题
如何通过正则表达式捕获到 script 标签中间的内容,例如 php 文件中的第三个 script 标签内容:
var a = 1;
var b = 2;解决方案
可以使用以下正则表达式:
/(zuojiankuohaophpcnscript\b([^"zuojiankuohaophpcnyoujiankuohaophpcn]+|"[^"]*")*youjiankuohaophpcn)([\s\s]*?)(zuojiankuohaophpcn\/scriptyoujiankuohaophpcn)/g
分析
这个正则表达式由以下部分组成:
-
捕获组 1:开始标签
立即学习“PHP免费学习笔记(深入)”;
(zuojiankuohaophpcnscript\b([^"zuojiankuohaophpcnyoujiankuohaophpcn]+|"[^"]*")*youjiankuohaophpcn)
匹配 script 标签的开始标签。
-
非捕获组:属性
([^"zuojiankuohaophpcnyoujiankuohaophpcn]+|"[^"]*")*
匹配属性,允许引号内的内容。
-
捕获组 2:中间内容
([\s\s]*?)
匹配中间内容,尽可能少匹配。
-
捕获组 3:结束标签
(zuojiankuohaophpcn\/scriptyoujiankuohaophpcn)
匹配 script 标签的结束标签。











