使用Regex删除脚本标记

我正在尝试使用我在本网站上找到的正则表达式,它似乎不起作用。 有任何想法吗?

输入字符串

sFetch = "123\n\t\tfunction utmx_section(){}function utmx(){}\n\t\t(function()})();\n\t456"; 

正则表达式

 sFetch = Regex.Replace(sFetch, ".*?", "", RegexOptions.IgnoreCase); 

添加RegexOptions.Singleline

 RegexOptions.IgnoreCase | RegexOptions.Singleline 

这将永远不会影响到一个。

  

因此,查找HTML Agility Pack等HTML解析器

正则表达式失败的原因是你的输入有newlines和元字符. 与它不符。

要解决此问题,您可以使用RegexOptions.Singleline选项作为S.Mark说,或者您可以将正则表达式更改为:

 "[\d\D]*?" 

使用[\d\D]代替.

\d是任何数字, \D是任何非数字,因此[\d\D]是一个数字或非数字,实际上是任何字符。

如果您确实想要清理html字符串(并且您使用的是.NET),那么请查看Microsoft Web Protection Library :

 Sanitizer.GetSafeHtmlFragment(untrustedHtml); 

这里有一个描述。

这有点短:

  " 

要么

 "<[^>]*>[^>]*>"