Я начал чувствовать, что использование регулярных выражений снижает ремонтоустойчивость кода. Есть что-то злое в отношении терпения и силы регулярных выражений. Perl сочетает это с побочными эффектами, такими как операторы по умолчанию.
У меня есть привычка документировать регулярные выражения, по крайней мере, с одним предложением, дающим основное намерение и по крайней мере один пример того, что будет соответствовать.
Поскольку регулярные выражения создаются, я чувствую, что абсолютная необходимость комментировать самые большие компоненты каждого элемента в выражении. Несмотря на это, даже мои собственные регулярные выражения заставили меня почесывать голову, как будто я читаю Клингону.
Вы намеренно опускаете свои регулярные выражения? Вы разложите возможно более короткие и более мощные на более простые шаги? Я отказался от вложения регулярных выражений. Существуют ли конструкции регулярных выражений, которых вы избегаете из-за проблем с энергопотреблением?
Не позволяйте этому примеру облачить этот вопрос.
Если следующий Michael Ash имел какую-то ошибку, у вас были бы какие-то перспективы делать что-либо, кроме как полностью отбросить его?
^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
За запросом точную цель можно найти, используя ссылку г-на Эша выше.
Матчи 01.1.02 | 11-30-2001 | 2/29/2000
Несоответствия 02/29/01 | 13/01/2002 | 11/00/02