Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Validando datas

using System.Text.RegularExpressions;

Console.Clear();

var regexData = @"^\d\d/\d\d/\d\d\d\d$"; // Ou: @"^\d{2}/\d{2}/\d{4}$"

Console.Write("Escreva a data do evento (dd/MM/aaaa): ");
string dataEvento = Console.ReadLine()!;

if (Regex.IsMatch(dataEvento, regexData)) {
    Console.WriteLine("Data válida");
}
else Console.WriteLine("Data inválida");
1 resposta
solução!

Oi, Diego! Como vai?

Validando datas com expressões regulares é uma habilidade muito útil no dia a dia do desenvolvimento, e você aplicou o conceito de forma clara e organizada.

No seu código, o uso de using System.Text.RegularExpressions já prepara o terreno para trabalhar com o Regex.IsMatch(). A variável var regexData armazena o padrão que verifica se a entrada segue o formato dd/MM/aaaa, e o Console.Write exibe a instrução ao usuário antes de capturar o valor com string dataEvento = Console.ReadLine().

O Console.Clear() é chamado no início para garantir uma tela limpa e organizada antes de qualquer interação. Em seguida, o Console.WriteLine exibe se a data informada é válida ou não. Você também foi além ao incluir duas versões do padrão no comentário, o que demonstra atenção à legibilidade do código.

Vale destacar que a mensagem exibida com Console.Write("Escreva a data do evento (dd/MM/aaaa): ") orienta bem o usuário sobre o formato esperado. Isso torna a experiência mais intuitiva e reduz a chance de erros de digitação ao informar a data do evento.

Uma sugestão para evoluir ainda mais é validar se a data informada realmente existe no calendário, não apenas se ela segue o formato correto. Para isso, o método DateTime.TryParseExact() é uma excelente opção. Veja o exemplo abaixo:


using System.Globalization;

string data = "31/02/2025";

bool dataValida = DateTime.TryParseExact(
    data,
    "dd/MM/yyyy",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out DateTime resultado
);

Console.WriteLine(dataValida);

Esse código verifica tanto o formato quanto a existência real da data no calendário. Combinando a sua abordagem com o Regex e essa validação adicional com DateTime.TryParseExact(), você terá uma solução bem mais robusta para o seu projeto de validação de datas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Você já tentou combinar o Regex com o DateTime.TryParseExact() em algum projeto para validar datas de forma mais completa? Como foi essa experiência?

Conteúdos relacionados
Como separar palavras em String com C#
C#: Eventos, Delegates e Lambdas