使用RegExp清理SQL

时间:2014-05-15 13:53:04

标签: sql regex

我在项目中有一个文本框,用户可以在其中编写数据库查询,但我希望阻止DELETEDROP或使用评论(/* */,{{1 }}或分号--

我正在使用以下的RegExp来检查查询。它必须只计算有效的数据。

;

RegExp工作正常,但它也没有匹配换行符和回车符(/^(?!.*\-\-)(?!.*\/\*)(?!.*\*\/)(?!.*;)(?!.*CREATE)(?!.*DROP)(?!.*ALTER)(?!.*UPDATE)(?!.*DELETE).*$/ \n),这应该是有效的。

如何更新RegExp以允许\r\n

1 个答案:

答案 0 :(得分:0)

@FabSa给了我答案。

诀窍就是设置PCRE_DOTALL flag,因为我正在使用PHP _ preg_match()。这确实使得点(.)元字符匹配所有字符,包括换行符(\n)。

所以,最终的正则表达式如下:

/^(?!.*\-\-)(?!.*\/\*)(?!.*\*\/)(?!.*;)(?!.*CREATE)(?!.*DROP)(?!.*ALTER)(?!.*UPDATE)(?!.*DELETE).*$/s