0
respostas

Como lidar com o Regex nesse caso?

Resolvi testar o código passado para o aprendizado do Regex de forma diferente mas com o mesmo intuito, criando uma classe separada com um método público que testa o parâmetro em relação ao padrão, validando se é falso ou verdadeiro, e retorna o valor que é congruente tanto no texto de teste como no padrão passado para o código.

public class Testador
{
    public Match TestaRegex(string texto)
    {
        string padrao = "[0-9]{4,5}-?[0-9]{4,5}";

        if (Regex.IsMatch(texto, padrao) == false)
            throw new Exception("Exceção lançada, revise o texto de teste.");

        Match resultado = Regex.Match(texto, padrao);
        return resultado;
    }
}

Nesse caso, meu texto de teste fora uma variável string nomeada "textoTeste" com o valor "aehuaheiaheiauehaieahui 85412-4571 fasdfasdfasdfasdfa". Deu tudo certo com e sem o hífen. Porém, testei com alguns números adicionais antes do hífen, e ele não lançou uma exceção, na verdade só excluiu alguns dos primeiros números do "telefone", e retornou a expressão sem esses números. Em um caso onde esse número testado fosse 855412-4571, o retorno que eu recebi foi "55412-4571". Achei interessante e fiquei com a sdúvidas: como lidar com esse caso? E em relação a exceção lançada, qual seria o tipo mais específico nesse caso? E como tratar melhor a forma de validação do Regex.IsMatch()? Sendo que eu creio que haverão situações que ele não cubrirá, ou até mesmo se foi interessante utilizar esse método de validação. Agradeço desde já pela ajuda!