惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
量子位
腾讯CDC
A
About on SuperTechFans
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
V
V2EX
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
罗磊的独立博客
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
V
Visual Studio Blog
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
有赞技术团队
有赞技术团队

博客园 - Voodoo's天空

时间、事件、实践 投票作弊程序制作思路(续)——突破IP限制投票 投票作弊程序制作思路 迁移SharePoint Portal Server 2003 (sps2003) 需要注意和出现的问题 一年没有更新自己的BLOG了,主要是记录一些从sqlserver导数据到oracle的解决方法 2004年的最后一个POST 开发自定义控件的笔记 (2) 开发自定义控件的笔记(1) 利用ADO中记录集筛选 Smart Client 高级开发 图解Windows历史 非常好的思想 (Design your web pages freely at runtime - by Jasper) 一个PHP版本的数据库操作类,针对MYSQL的 在不同语言中关于CheckBox的处理办法(ASP、JSP、PHP) 一个不完整的OLEDB操作类(自己乱写的,呵呵) Winform的登录窗体设计思路 在应用程序中打开浏览器 周末的中日之战…… 关于值类型和引用类型比较的问题
C#中使用正则表达式清除javascript脚本的方法
Voodoo's天空 · 2006-06-16 · via 博客园 - Voodoo's天空

最近在做一个项目,里面有个需求是分析网页文件,并且检索到需要的内容,并且显示到客户端上。

问题就出现了,如果一个网页文件中包含了<script>alert()</script>。这样的脚本文件,则会出问题了。

于是我想了很多办法,但是都不是很好用。

我参考了dudu的替换脚本的方法

public static string FilterScript(string content)

 
{

              
string regexstr=@"<script.*</script>";

              
return Regex.Replace(content,regexstr,string.Empty,RegexOptions.IgnoreCase);

 }

但是这样有问题,也就是只能替换<script></script>在一行的情况

于是修改了以上的代码成为

public static string FilterScript(string content)

         
{

              
string regexstr=@"(?i)<script([^>])*>(\w|\W)*</script([^>])*>";

              
return Regex.Replace(content,regexstr,string.Empty,RegexOptions.IgnoreCase);

          }

这样表面看问题好像解决了,但是依旧有问题。他会把只要是在<script></script>中的任何内容都替换为空,也就是说,如果出现了,<script></script>内容<script></script>的情况,会被替换为空。

于是最终修改为

        private string FilterScript(string content)
        
{
            
string regexstr=@"<script[^>]*>([\s\S](?!<script))*?</script>";
            
return Regex.Replace(content,regexstr,string.Empty,RegexOptions.IgnoreCase);

        }

这样,就会循环的进行替换,只把<script></script>之间的内容替换,而不会从头替换到脚

希望对其他能搜索到这篇内容的朋友有所帮助