正则表达式负向前瞻匹配,而它不应该

时间:2016-03-14 14:10:26

标签: php mysql regex

美好的一天。我正在使用以下正则表达式来限制用户在MySQL查询中添加“坏”内容。

$regex = "/\s+where(?:\s+([a-z]\w*\.?\w*)\s*=\s*(?!\1)\'?\w*\'?(?:\s*and)?)+\s*(?:order\s+by|limit|$)/uix";

事情是,在尝试以下查询时 - 它仍匹配:

$query = "UPDATE test set is_active = 1 where id = id ";
var_dump(preg_match($regex, $query));die;
//int(1)

更奇怪的是,我尝试使用thisthis和regexr.com等在线工具测试和调试此正则表达式,并且正则表达式与查询不匹配。 我错过了一些旗帜或设置或什么?

编辑:没有正确地逃避\ 1因为使用双引号。谢谢你从regex101聊天金鱼:)

0 个答案:

没有答案