我正在尝试使用我在本网站上找到的正则表达式,它似乎不起作用.有任何想法吗?
输入字符串:
sFetch = "123<script type=\"text/javascript\">\n\t\tfunction utmx_section(){}function utmx(){}\n\t\t(function()})();\n\t</script>456";
正则表达式:
sFetch = Regex.Replace(sFetch, "<script.*?>.*?</script>", "", RegexOptions.IgnoreCase);
加 RegexOptions.Singleline
RegexOptions.IgnoreCase | RegexOptions.Singleline
这将永远不会影响到一个.
<script
>
alert(1)
</script
/**/
>
因此,查找HTML Agility Pack等HTML解析器
正则表达式失败的原因是您的输入有newlines,并且元字符.与它不匹配.
要解决此问题,您可以使用RegexOptions.SinglelineS.Mark所说的选项,或者您可以将正则表达式更改为:
"<script[\d\D]*?>[\d\D]*?</script>"
用来[\d\D]代替..
\d是任何数字并且\D是任何非数字,因此[\d\D]是数字或非数字,实际上是任何字符.
如果您确实想要清理 html 字符串(并且您正在使用 .NET),请查看Microsoft Web Protection Library:
Sanitizer.GetSafeHtmlFragment(untrustedHtml);
这里有一个描述。
| 归档时间: | 
 | 
| 查看次数: | 14058 次 | 
| 最近记录: |