Я не уверен, что то, что вы пытались сопоставить, не сработало, но вот несколько советов по вашим запросам.
Ваше первое выражение,
string regexForTypicalInj = @"/\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix";
, кажется, предназначен для того, чтобы поймать одиночную кавычку, за которой следует "или". Я бы обязательно обработал случай, когда после одинарной кавычки и перед "или" есть пробел. Кроме того, вам не нужно экранировать символы% или '. С этими изменениями становится,
string regexForTypicalInj = @"/\w*((%27)|')\s*(o|(%6F)|(%4F))(r|(%72)|(%52))/ix";
В остальных выражениях я бы добавил допуск на пробел, а также включил символы в кодировке URL. Делая это, они становятся,
string regexForUnion = @"/((%27)|')\s*(u|%75|%55)(n|%6E|%4E)(i|%69|%49)(o|%6F|%4F)(n|%6E|%4E)/ix";
string regexForSelect = @"/((%27)|')\s*(s|%73|%53)(e|%65|%45)(l|%6C|%4C)(e|%65|%45)(c|%63|%43)(t|%74|%54)/ix";
string regexForInsert = @"/((%27)|')\s*(i|%69|%49)(n|%6E|%4E)(s|%73|%53)(e|%65|%45)(r|%72|%52)(t|%74|%54)/ix";
string regexForUpdate = @"/((%27)|')\s*(u|%75|%55)(p|%70|%50)(d|%64|%44)(a|%61|%41)(t|%74|%54)(e|%65|%45)/ix";
string regexForDelete = @"/((%27)|')\s*(d|%64|%44)(e|%65|%45)(l|%6C|%4C)(e|%65|%45)(t|%74|%54)(e|%65|%45)/ix";
string regexForDrop = @"/((%27)|')\s*(d|%64|%44)(r|%72|%52)(o|%6F|%4F)(p|%70|%50)/ix";
string regexForAlter = @"/((%27)|')\s*(a|%61|%41)(l|%6C|%4C)(t|%74|%54)(e|%65|%45)(r|%72|%52)/ix";
string regexForCreate = @"/((%27)|')\s*(c|%63|%43)(r|%72|%52)(e|%65|%45)(a|%61|%41)(t|%74|%54)(e|%65|%45)/ix";
Еще одно предложение для кода в целом: для каждого оператора if
я бы предложил заменить isInj = true;
на return true;
, чтобы не тратить время на ненужные сравнения. В действительности это, вероятно, не будет иметь никакого значения для производительности, но могло бы, если бы вы действительно часто вызывали эту функцию.