Autor Tópico: Validar nome de arquivo  (Lida 4269 vezes)

Offline leandrodeveloper

  • Usuário Ubuntu
  • *
  • Mensagens: 60
    • Ver perfil
Validar nome de arquivo
« Online: 04 de Setembro de 2017, 13:37 »
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?

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re:Validar nome de arquivo
« Resposta #1 Online: 05 de Setembro de 2017, 09:13 »
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
Código: [Selecionar]
(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
Código: [Selecionar]
(0[1-9]|[1-2][0-9]|3[0-1])

Mes
Código: [Selecionar]
(0[1-9]|1[0-2])

Ano
Código: [Selecionar]
(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:

Código: [Selecionar]
(?:(?:(?:[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.

Offline leandrodeveloper

  • Usuário Ubuntu
  • *
  • Mensagens: 60
    • Ver perfil
Re:Validar nome de arquivo
« Resposta #2 Online: 05 de Setembro de 2017, 09:43 »
Obrigado! vou testar e respondo assim que tiver a reaposta, obrigado a todos!

Enviado de meu SM-G930F usando Tapatalk


Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re:Validar nome de arquivo
« Resposta #3 Online: 05 de Setembro de 2017, 19:53 »
Que coisa linda:

Código: [Selecionar]
(?:(?:(?:[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