entermix:
UPD. Для п.4 Если совпадение среди не валидных выходим с false, если совпадение среди валидных,- с true. Просто еще один if добавится. А массив общий
Вся идея в том, что т.к. не валидные условия начинаются с "-", они окажутся в начале массива. И если будет совпадение с валидным,- то можно прерывать дальнейший цикл. С не валидным совпадения гарантировано уже не будет. Например, как в случае:
30573484 - ОК
30773484 - BAD