Массив
Форма => регулярка
И проходить, пока не будет нужной формы, мне кажется так. Только вопрос в производительности
Там прикол в том, что форма не маленькая. В ней есть "главная" форма, типо проверяет на соответствие, а штук 5 подформ, которые достают необходимые значения