登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

C#正则转义  

2008-12-22 10:37:57|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

C#正则转义

    正则表达式是文本处理中的一把利剑。如果正则表达式构造时部分来自用户输入,则需要谨慎的对用户输入中的正则敏感字符进行安全转义替换,以防止正则表达时构造失败或发生意外注入。

    下面是安全的转义代码:

         /// <summary>

         /// 将含有正则表达式特殊字符字符的字符串转义为安全的正则表达式字符串

         /// 通常用于防止意外的正则表达式构造

         /// </summary>

         /// <remarks>

         /// .$ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配。

         /// </remarks>

         /// <see cref="http://msdn.microsoft.com/zh-cn/library/4edbef7e.aspx">《字符转义》</see>

         static string RegexStringToCommonString(string regexStr)

         {

              // 关于RegexOptions.Compiled选项的使用请参见 http://blog.livid.cn/zackzhu/200711/thinking/17_395.html

              // Regex replace = new Regex("[.$^{\\[(|)*+?\\\\]", RegexOptions.Compiled);

              Regex replace = new Regex("[.$^{\\[(|)*+?\\\\]");

              return replace.Replace(regexStr, (Match m) => "\\" + m.Value);

         }


2009-5-7

    突然发现Regex中的静态方法Escape和Unescape是用来专门做正则表达式的转义和取消转义的。对手册的不熟悉导致我重新发明了一个自以为很牛x的轮子。

    另外Regex中提供了单次正则匹配的实用函数,以后单次应用的匹配是没有必要构建Regex对象的。

  评论这张
 
阅读(2966)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018