none
RegularExpressionValidator RRS feed

  • Pergunta

  • Como validar apenas os numeros 1,2,3,4 e 5 pelo RegularExpressionValidator ?

    <asp:RegularExpressionValidatorID="RegularExpressionValidator4"runat="server" ControlToValidate="TextBoxNUMERO"

                ErrorMessage="Numero inválido"Font-Size="8pt"

                ValidationExpression="Aqui seria o codigo da validação">

                *</asp:RegularExpressionValidator>

    alguem sabe ?

    Fico no aguardo.

    Obrigado.

    sexta-feira, 14 de junho de 2013 16:12

Respostas

Todas as Respostas

  • Olá,

    Se você quiser que somente os números de 1 à 5 sejam válidos, independentemente da quantidade de caracteres informados, a expressão seria: 

    ValidationExpression="^[1-5]*$"
    ^       --> indica que deve a validação deve valer do inicio;

    [1-5] --> indica que o intervalo válido vai de 1 à 5;

    *       --> indica que pode haver 0 ou N caracteres;

    $       --> indica que a validação deve valer até o final;

    Sem o ^ e $, se tivesse qualquer numeral de 1 à 5 em qualquer parte da string, a expressão resultaria em verdadeiro.


    Diego Cotini do Couto - MCTS .NET Framework 3.5, ASP.NET Applications

    sexta-feira, 14 de junho de 2013 16:57
  • Diego

    Eu so não entendi a quantidade.

    A quantidade de caracteres tem que ser 1.

    Então so vale se o usuario colocar 1 ou 2 ou 3 ou 4 ou 5.

    Então como ficaria a ValidationExpression ?

    Aguardo Retorno.

    Obrigado.

    sexta-feira, 14 de junho de 2013 17:04
  • Se for somente um dígito fica: 

    ValidationExpression="^[1-5]$"

    * Lembrando que o RegularExpressionValidator não realiza validação quando a string é vazia, portanto, se for obrigatório o preenchimento, terá que colocar um RequiredFieldValidator também.


    Diego Cotini do Couto - MCTS .NET Framework 3.5, ASP.NET Applications

    sexta-feira, 14 de junho de 2013 17:08
  • Diego.

    So me tira uma duvida o outro Diego colocou sem o $

    E vc colocou com $

    $       --> indica que a validação deve valer até o final;

    Qual eu uso ?

    Pela sua explicação que coloqui acima esse simbolo inidica que deve valer ate o final.

    Porem não entendi ja que tem apenas 1 digito.

    Fico no aguardo.

    Obrigado.

    sexta-feira, 14 de junho de 2013 17:47
  • Paulo,

    Neste caso, ambas terão o mesmo funcionamento. Da mesma forma que se fosse colocado "[1-5]$".

    Porém, como boa prática, sempre que quero que algo seja rigidamente iniciado e terminado dessa forma, coloco  ^$.

    Se você estivesse utilizando uma Regex para fazer Replace, essa distinção faria diferença, conforme:

    Regex regInicio = new Regex("^[1-5]");
    string valInicio = regInicio.Replace("123", "@");
    
    Regex regFim = new Regex("[1-5]$");
    string valFim = regFim.Replace("123", "@");
    
    Regex regInicioFim = new Regex("^[1-5]$");
    string valInicioFim = regInicioFim.Replace("123", "@");
    
    Regex regQualquer = new Regex("[1-5]");
    string valQualquer = regQualquer.Replace("123", "@");


    1º Caso: substituiria o primeiro dígito numérico se estiver no início da sequência;

    2º Caso: substituiria o último dígito numérico se estiver no fim da sequência;

    3º Caso: substituiria o dígito numérico somente se estiver no início e fim, ou seja for único;

    4º Caso: substituiria o dígito numérico independente da posição, portanto, substituiria todos;

    * O dígito numérico de 1 a 5;


    Diego Cotini do Couto - MCTS .NET Framework 3.5, ASP.NET Applications


    • Editado Diego Cotini sexta-feira, 14 de junho de 2013 18:25
    sexta-feira, 14 de junho de 2013 18:24
  • Ok Diego eu entendi.

    Mas caso eu queira validar palavras.

    Exemplo:

    ANGULAR

    TOPO

    LONGITUDINAL

    Como ficaria ValidationExpression ?

    Fico no aguardo.

    Obrigado

    sexta-feira, 14 de junho de 2013 18:32
  • Se for uma palavra basta colocar somente ela, se for um grupo de palavras, basta colocar todas separadas por |, conforme:

    ^(ANGULAR|TOPO|LONGITUDINAL)$

    O pipe "|", tem a função de OU.

     No caso, só coloquei as palavras em maiúsculas... se for preciso minúsculas você terá que colocá-las também. Os parênteses nesse caso são opcionais também, mas pela mesma questão das boas práticas que adoto, sempre coloco quando utilizo OU.

    RegularExpressions são bem interessantes e muito úteis... é muito difícil saber tudo e montar expressões complexas, porém, sabendo o básico já ajuda bastante.

    O site abaixo é bem interessante, tem várias Regex para N situações, assim como testar regex:

    http://regexlib.com/(A(-6LKDFLqGg1jVb9mCYnu1L5hjTLX1fQgTX13bap4m9g2aHbPOPuPRzvpw5oNfRpwXKqd9I6vmjjzJIRMrrlF8B4swdhRlnrPebzYaLxagPijIDIn9pUKN89YlWWzxH5jeuqHi7KENOza_DQ0dx28k-nXnq5NyVLiXSKm9macqCyO_JDJGe-SfUcP322SpKOn0))/RETester.aspx


    Diego Cotini do Couto - MCTS .NET Framework 3.5, ASP.NET Applications

    • Marcado como Resposta ricardoti2012 segunda-feira, 17 de junho de 2013 19:11
    sexta-feira, 14 de junho de 2013 18:57
  • Valeu Diego

    Deu certo.

    Eu entendi agora como funciona e estou usando em outros casos parecidos...

    Muito Obrigado pela ajuda.

    Ja marquei como reposta.

    segunda-feira, 17 de junho de 2013 19:12