Como escrevo expressões regulares mais sustentáveis?

Comecei a achar que o uso de expressões regulares diminui a manutenção do código. Há algo de mal na discrepância e no poder das expressões regulares. O Perl combina isso com efeitos colaterais, como operadores padrã

TENHO o hábito de documentar expressões regulares com pelo menos uma frase que dê a intenção básica e pelo menos um exemplo do que corresponderi

Por que expressões regulares são criadas, sinto que é uma necessidade absoluta comentar sobre os maiores componentes de cada elemento da expressão. Apesar disso, até minhas próprias expressões regulares me fazem coçar a cabeça como se estivesse lendo Klingo

Você intencionalmente muda suas expressões regulares? Você decompõe os possivelmente mais curtos e mais poderosos em etapas mais simples? Desisti de aninhar expressões regulares. Existem construções de expressão regular que você evita devido a problemas de disponibilidade?

Não deixe que este exemplo ofusque a pergunta.

Se o seguinte forMichael Ash tivesse algum tipo de bug, você teria alguma perspectiva de fazer qualquer coisa além de jogá-lo for

^(?:(?:(?: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})$

Por solicitação, o objetivo exato pode ser encontrado usando o link do Sr. Ash acim

Partida 01.1.02 30/11/2001 29/2/2000

Não correspondências 29/02/01 | 13/01/2002 11/00/02

questionAnswers(13)

yourAnswerToTheQuestion