日期:2014-05-17  浏览次数:20453 次

这个正则表达式是什么意思啊
C# code

Regex r = new Regex(@"'.*'.*(Delete|Insert|Drop|Update|Create).*'.*'", RegexOptions.IgnoreCase);
Match m = r.Match(sqlStr);



看注释是 验证是否包含恶意执行语句

请问他能具体过滤什么呢?

这个在过滤长sql语句时很慢
有没有什么好的可以替代呢

谢谢啦



------解决方案--------------------
'xxx'xxxDeletexxx'xxx'
'xxx'xxxInsertxxx'xxx'
'xxx'xxxUpdatexxx'xxx'
'xxx'xxxCreatexxx'xxx'
------解决方案--------------------
探讨

'xxx'xxxDeletexxx'xxx'
'xxx'xxxInsertxxx'xxx'
'xxx'xxxUpdatexxx'xxx'
'xxx'xxxCreatexxx'xxx'

------解决方案--------------------
[RegexOptions.IgnoreCase]
忽略大小写

'.*'.*(Delete|Insert|Drop|Update|Create).*'.*'
' 字符'
.* 任意字符,无限次重复,贪婪匹配,尽可能多匹配
' 字符'
(Delete|Insert|Drop|Update|Create) 括号内的单词,任意一个,因为有属性描述忽略大小写,则此处不考虑大小写。
.* 任意字符,无线多次重复。
' 字符'
.* 任意字符,无线多次重复。
' 字符'


你贴的这个正则,实际上,写的不是很好,甚至可以说些的很烂,效率不高。与其这样检查

他们写的x表示任意字符,你既看不懂正则,又看不懂别人的示意,你说任意长度的字符,你让别人怎么描述呢?