匹配所有JavaScript块

本文关键字:JavaScript | 更新日期: 2023-09-27 18:29:46

我正在尝试匹配html文件中的所有JavaScript块。

目前我正在使用:

 content = Regex.Replace(content, "<script.*type='"text/javascript.*</script>", String.Empty);
 content = Regex.Replace(content, @"<script's*.*type=''text/javascript's*.*'s*</script>", String.Empty);

但是,例如,我无法匹配以下字符串:

<script src="http://mediamond.js.ad.dotandad.com/MediamondAds.js" language="javascript" type="text/javascript" id=
"mediamondBaseJS"></script>

我错过了什么?

编辑

我试过你的建议,它离解决方案又近了一步,但现在它太贪婪了(或者可能线路开头的</script>会带来一些问题?)

我正在使用:

Regex.Match(content, @"<script['s'S]*?type='text/javascript['s'S]*?</script>", RegexOptions.Singleline).Value

我也尝试过以行^开头

但是现在的匹配太长(忽略第一个</script>!):

<script type="text/javascript" language="javascript">
var mediamondAd=new MediamondAds();
mediamondAd.setTagPfx("br_fol_for_mi");
</script>
<!-- MEDIAMOND END -->
<div align="center" style="padding-top: 10px;"><script type='text/javascript'><!--// <![CDATA[
    OA_show(26);  
// ]]> --></script>

匹配所有JavaScript块

点字符与换行符不匹配。html在language属性和结束脚本标记之间有一条换行符。考虑使用这个替代:

<script['s'S]*?type='"text'/javascript['s'S]*?</script>
's = whitespaces (including line breaks)
'S = non-spaces
? = non-greedy so it stops looking when it gets the first type attribute / first closing </script> tag