Задача плохо формализована.
Вопросы:
1) Какие требования по производительности? Размер строк, количество строк в секунду, etc. Если требования не очень высоки - возможно вас устроит и обычные регулярные выражения.
2) Насколько часто меняются требования к проверке? Если редко - есть смысл написать некоторое количество классов, каждый из которых будет специфицирован под конкретную задачу.
3) Если требования меняются часто, но при этом только добавляются, оставляя предыдущие требования необходимыми для исполнения - чем не устраивает решение с генерацией кода проверки на лету?
Рекомендую почитать про алгоритмы работы со строками.