Validar nome de arquivo

Iniciado por leandrodeveloper, 04 de Setembro de 2017, 13:37

tópico anterior - próximo tópico

leandrodeveloper

Bom tarde,

Preciso validar uma string no seguinte formato string_numero_data

por exemplo:

ubuntu_1604_30082017193308.txt

esta parte será fixa (ubuntu_1604_), logo ja tenho uma constante pra comprar, agora 30082017193308 é uma data no seguinte formado:

ddmmyyyyhhmmss

Alguém tem ideia se da pra eu fazer isso com uma unica expressão regular ou ser preciso quebrar a string e validar parte por parte?
Alguém tem um exemplo?

Felix

O mais difícil acho que é justamente na questão da data, mas encontrei Este tópico no StackOverflow em Português que imagino que pode lhe ajudar, dê uma olhada:

Citar
Tenta isso

(0[1-9]|[1-2][0-9]|3[0-1])(0[1-9]|1[0-2])(199[0-9]|200[0-9]|201[0-9]|2020)

Sendo

Dias

(0[1-9]|[1-2][0-9]|3[0-1])


Mes

(0[1-9]|1[0-2])


Ano

(199[0-9]|200[0-9]|201[0-9]|2020)

Único problema é que não valida fevereiro (30.02.2000) por exemplo é válido.

Tem como validar as datas com essa exp, mas ai não tem limitação de ano:


(?:(?:(?:[01][1-9]|2[1-8])(?:0[1-9]|1[0-2])|(?:29|30)(?:0[13-9]|1[0-2])|31(?:0[13578]|1[02]))[1-9]\d{3}|2902(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00))


Ps.: Não testei.

leandrodeveloper

Obrigado! vou testar e respondo assim que tiver a reaposta, obrigado a todos!

Enviado de meu SM-G930F usando Tapatalk


agente100gelo

Que coisa linda:

(?:(?:(?:[01][1-9]|2[1-8])(?:0[1-9]|1[0-2])|(?:29|30)(?:0[13-9]|1[0-2])|31(?:0[13578]|1[02]))[1-9]\d{3}|2902(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00))
Advogado e analista de sistema cearense.
Twitter: @glaydson