"Encere à direita, lixe à esquerda e pinte para cima e para baixo."
Vamos ver uma maneira diferente e interessante de mostrar exemplos de expressões regulares: mostrando como funciona o processo criativo, passo a passo. A arte ninja milenar de criar ERs do nada, pela primeira vez demonstrada.
Mentalizando seu objetivo (data, horário, e-mail, número, telefone), comece a primeira tentativa tímida e abrangente, usando o ponto para se ter um esqueleto genérico do que se quer casar. Teste a ER assim mesmo.
Deu certo? Então agora você trocará alguns dos pontos para ser mais específico, de acordo com as regras do tipo de dado que você quer casar. E assim segue, devagar, sempre testando cada modificação e seguindo a passos curtos, com modificações pequenas.
Ao chegar em um ponto onde já está bem específico, procure por alternativas, exceções, elas sempre existem. Aquele trecho da ER é realmente obrigatório, não seria opcional? E quando você acha que a ER está pronta, chega um dado novo um pouquinho diferente e você vê que tinha esquecido que aquilo também era válido. Para incrementar a ER, suas armas são os grupos, o ou, o opcional e as chaves.
Quando sua ER ficar grande e cheia de alternativas, é sinal de que você está conseguindo dizer ao robozinho exatamente o que quer. E assim é que se fazem ERs complicadas Daniel San, de grão em grão!
Tolo daquele que senta e quer escrever o todo de uma vez! A arte de criar ERs deve ser saboreada, sem pressa, e com inspiração.
"Dê um passo após o outro pequeno gafanhoto."
dd/mm/aaaa ../../.... [0-9]{2}/[0-9]{2}/[0-9]{4} [0123][0-9]/[0-9]{2}/[0-9]{4} [0123][0-9]/[01][0-9]/[0-9]{4} [0123][0-9]/[01][0-9]/[12][0-9]{3} ([012][0-9]|3[01])/[01][0-9]/[12][0-9]{3} ([012][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3} (0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3} hh:mm ..:.. [0-9]{2}:[0-9]{2} [012][0-9]:[0-9]{2} [012][0-9]:[0-5][0-9] ([01][0-9]|2[0-3]):[0-5][0-9] usu@dom.zz .*@.* [^@]*@[^@]* [^@]+@[^@]+ [A-Za-z0-9_.-]+@[A-Za-z0-9_.]+ [A-Za-z0-9_.-]+@[A-Za-z0-9_]+\.[a-z]{2,3} [A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[a-z]{2,3} [A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[A-Za-z]{2,3} [A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[A-Za-z]{2,4} números [0-9] [0-9]+ -?[0-9]+ [-+]?[0-9]+ [-+]?[0-9]+,[0-9]{2} [-+]?[0-9]+(,[0-9]{2})? [-+]?[0-9]+\.[0-9]+(,[0-9]{2})? [-+]?[0-9]+\.[0-9]{3}(,[0-9]{2})? [-+]?[0-9]{3}\.[0-9]{3}(,[0-9]{2})? [-+]?[0-9]{1,3}\.[0-9]{3}(,[0-9]{2})? [-+]?[0-9]{1,3}(\.[0-9]{3})?(,[0-9]{2})? telefone ...-.... [0-9]{3}-[0-9]{4} [0-9]{4}-[0-9]{4} \(..\)[0-9]{4}-[0-9]{4} \(..\) ?[0-9]{4}-[0-9]{4} \(0xx..\) ?[0-9]{4}-[0-9]{4} \(0xx[0-9]{2}\) ?[0-9]{4}-[0-9]{4} (\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4}