ASP NET - Regular Expression Validator

Teste de Regular Expression Validator

Clique no campo texto acima e digite um CEP

Na validação defini o formato como 8 digitos numéricos seguidos sem espaços ou traços

Se no campo você digitar qualquer coisa diferente de 8 dígitos numéricos - NÃO deve passar na validação

Note que essa validação poderia ser bem mais complexa como um CGC ou um CNPJ mas este é um exemplo simples.

Exemplo de código:
        <asp:RegularExpressionValidator
            ID="RegularExpressionValidator1"
            runat="server"
            ErrorMessage="Erro no RegularExpressionValidator-Digite o CEP com 8 caracteres numéricos"
            ControlToValidate="TextBox1"
            ValidationExpression="\d{8}"
            ForeColor="Red"
            ToolTip="Digite um CEP ( 8 dígitos numéricos)">
        </asp:RegularExpressionValidator>

Note que na expressão regular definimos d{8} ou seja, 8 dígitos numéricos decimais. Portanto será feito 2 testes pelo menos com o campo:
1-Se tem realmente 8 dígitos. Se não tiver, falha.
2-Se os campos são numéricos (0 a 9).
São duas verificações relativamente complexas feitas de uma maneira muito simplificada. Esse é o poder das Expressões Regulares.

Importante 1 :Não se esqueça de configurar AutoEventWireup="true" no @Page da página. Isto é que dispara o evento quando o controle perde o foco.

Importante 2 : O validator apenas coloca ou não a mensagem de erro mas não toma nenhuma atitude.
A propriedade Text do validator tem a mensagem de erro ou não e é ela que devemos utilizar para tomar decisões como o submit da página. Podemos também verficar o valor do parametro Page.IsValid no submit da página mas isto ocorre quando a página já foi enviada ao servidor.

A propriedade Text do validator tem a mensagem de erro ou não e podemos utilizar para tomar decisões como o submit da página mas o mais comum é o parametro Page.IsValid no submit da página mas isto ocorre quando a página já foi enviada ao servidor.

Basicamente nesse controle definimos alguns parâmetros :
   •ControlToValidate : Id do Controle a ser validado.
   •ErrorMessage : A mensagem a ser exibida em caso de erro.
   •ForeColor : Red : A cor da mensagem em vermelho.
   •ToolTip : Dica que neste caso é a mensagem 'Dica do Compare Validator'.
   •O campo ValueToCompare não existe neste controle maso campo ValidationExpression contém a Expressão Regular que valida o dado.

O parâmetro Type Não existe neste controle.

O parâmetro Operator Não existe neste controle.

Outro parâmetro importante é o EnableClientScript que possibilita criar uma rotina javascript para tratar a validação do lado do cliente antes de submeter a validação do lado do servidor.

Outro fato importante a citar sobre o CompareValidator é que ele não é um controle ASPNET mas sim AJAX e com isto funciona em páginas asp, aspx, html, etc.

Botão Submit

No caso de termos que trabalhar com a validação em conjunto com o botão de submit faríamos o seguinte :

<asp:Button ID="btnEnviar" runat="server" Text="Enviar" OnClick="btnEnviar_Click" />

    Protected Sub btnEnviar_Click(sender As Object, e As EventArgs)
        Page.Validate()

        If Page.IsValid Then
            lblMsg.Text = "Texto validado...seguindo com submit dos dados"
        End If

Se o validador aprovar o parâmetro Page.IsValid será true. Caso contrário será falso e o processo nada fará mas o validador automaticamente colocará a mensagem de erro de validação na tela.

Note que igualmente aos outros controles é quando o campo texto perde o foco que o evento de validação é disparado.

No campo args.Value dos dados recebidos pela função JavaScript está o valor do campo digitado.

args.IsValid = true/false; define se a função deve retornar que o dado é válido(true) ou falso(false).