Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Expressões Regulares - ASP NET CORE

Boa noite gente,

Estou desenvolvendo um sistema de controle de estoque com o ASP NET CORE e ENTITY Framework

Ao criar as classes, que representam as entidades na tabela do SQL, comecei a fazer certos tipos de verificações e também formatações para a visualização final e quando estava desenvolvendo a classe chamada Fornecedor, no qual tem os campos de CNPJ,CEP e Telefone. Fiquei com dúvida, pois o campo é uma String, porém eu quero que o usuário apenas digite números, alguém conhece alguma expressão regular que consiga fazer isso?

Segue abaixo o código:

public class Fornecedor
    {
        [Display(Name = "Codigo Fornecedor")]
        public int Id_Fornecedor { get; set; }

        [Required]
        [Display(Name = "Fornecedor"), 
            StringLength(80, ErrorMessage = "Nome do fornecedor não pode ser maior que 80 caracteres."),
            RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$", ErrorMessage = "Primeira letra deve ser Maiúscula!")]
        public String Nome_Fornecedor { get; set; }

        [Required]
        [Display(Name = "CNPJ"),
            DisplayFormat(DataFormatString = "{0:##.###.###/####-##}", ApplyFormatInEditMode = true),
            StringLength(14, MinimumLength = 14, ErrorMessage = "CNPJ não pode ser maior que 14 digitos.")]     
        public String CNPJ_Fornecedor { get; set; }

        [Display(Name = "CEP"),
            DisplayFormat(DataFormatString = "{0:#####-###}", ApplyFormatInEditMode = true),
            StringLength(8, MinimumLength = 8, ErrorMessage = "CEP não pode ser maior que 8 digitos.")]    
        public String CEP_Fornecedor { get; set; }

        [Display(Name = "Telefone"),
            DisplayFormat(DataFormatString = "{0:(##) ####-####}", ApplyFormatInEditMode = true),
            StringLength(11, MinimumLength = 11, ErrorMessage = "Telefone não pode ser maior que 11 digitos")]
        public String Telefone_Fornecedor { get; set; }
    }

No caso para o nome eu encontrei uma expressão regular que faz com que o usuário não possa digitar espaços em branco e a primeira letra precisa ser maíscula.

Outra dúvida, é que quando eu estava pesquisando sobre expressões regulares e validações no ASP NET, eu encontrei um requerimento chamado [phone] , que faz a verificação de telefone, no caso é uma verificação confiável ou eu também deixo formatado da minha forma?

Desde já obrigado!

7 respostas
solução!

Olá, Gabriel

Se você quer validar o telefone nos padrões (11) 1234-1234 ou (11) 12345-1234, você pode utilizar esta expressão regular:

RegularExpression(@"^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$", ErrorMessage = "Formato do telefone é inválido")

Sobre o atributo [Phone], eu sei que existe, porém não encontrei exemplo de uso, então não posso dizer se é adequado ou não.

Qualquer dúvida nos avise. Boa sorte e bons estudos!

Opa beleza, vou ajustar o de telefone... mas a minha maior dúvida ficou se o usuário vai conseguir ou não digitar letras nesses campos onde só é permitido número... com essas validações e máscaras eu já consigo fazer com que o programa aceite apenas números?

Opa beleza, vou ajustar o de telefone... mas a minha maior dúvida ficou se o usuário vai conseguir ou não digitar letras nesses campos onde só é permitido número... com essas validações e máscaras eu já consigo fazer com que o programa aceite apenas números?

Infelizmente no browser do desktop você vai continuar podendo digitar letras, a não ser que use JavaScript. Você pode utilizar plugins do jQuery, como o InputMask: https://github.com/RobinHerbots/Inputmask

Ah sim, vou dar uma olhada, tem bastante coisa legal nesse InputMask.

E antes de eu fechar o tópico, o que você achou dessa classe? ficou legal as validações e máscaras que eu usei?

Sou novo no mundo asp net, então estou procurando me aperfeiçoar cada vez mais!

Achei muito bom, Gabriel, é isso aí! Esses "metadados" ajudam a deixar seu modelo de dados mais consistente. Minha sugestão é só simplificar o nome das propriedades, removendo o sufixo. Em vez de Id_Fornecedor, CNPJ_Fornecedor, CEP_Fornecedor, etc., troque por Id, CNPJ, e CEP.

Bem vindo ao mundo ASP.NET! No que precisar nessa nova jornada, pode contar com a gente aqui no fórum. A propósito, o que está achando do curso? Um abraço!

Os cursos da Alura são sempre fantásticos, o aprendizado é muito bom... esse curso versão 2.0 ficou ótimo, parabéns pelo trabalho e obrigado pela ajuda!!

Muito obrigado pelo carinho, Gabriel! Esse contato com o aluno é muito importante pra mim (para nós da Alura, na verdade). Um abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software