看到网上有很多用正则表达式验证数据代码,在.net中也有现成的正则验证正则表达式!我发现很多验证的在方都可以用正则进行,而且这样代码为变得简单,正则表达式却是很复杂。我在一个应用中想用正则来验证客户端的提供的数据,最终结果是十多行代码就可以搞定整个项目的所有数据提交的验证。但是正则表达式设计初衷为匹配字符串,而且我认为正则表达式匹配会有很多逻辑,所以觉得用他来验证会影响到速度,所以请求业内大虾指点迷津。

解决方案 »

  1.   

    楼长说的对,正则的确会存在速度的问题,但其慢个人认为并不是慢在逻辑上,而是匹配模式上
    因为其是贪婪匹配,大数据的操作的确会花费多的时间.
    但正则也可以根据需要写成非贪婪模式(我在csdn没见有人写过,包括自己也没写过,因为大数据都自己写字符串处理了)总的来说大量的数据验证是否使用正则要看其实际应用的效果了(说了又和没说一样)
      

  2.   

    楼上说得有道理,我对非贪婪不了解。我在系统中这是这样用的,首先用存储XML验证配置档如下
    <root>
     <forum_userinfo> 表名
       <username pattern="^.{1,30}$">用户名不符合规则</username> '节点为字段名
     </forum_userinfo>
    </root>
    然后提取xml相应结点对相应字段进行匹配验证。
      

  3.   

    感觉正则对小数据的匹配非常优秀,当然在大数据进行匹配替换时还是非常优秀,但是如果要进行大数据匹配验证,如 验证一个文本内容是否超过1K个uncode字符,正则我试过好像可以这样写^(\r?[^\r]){0,1024}$