none
Regex não funciona! RRS feed

  • Pergunta

  • Uso VS2010, AspNet4, C#

    Estou fazendo o código abaixo para verificar se em um Textbox tem apenas e obrigatoriamente letras e números

    ----- lado servidor---------

    using System.Text.RegularExpressions; 

      string password = txtSenha.Text.Trim();

                    string verifica = "^[a-zA-Z0-9]";
                    if (Regex.IsMatch(password, verifica))
                    {

    }

     mas não funciona, ex: se eu digitar "GIRAFALES" entra no if, o que tá errado??


    Álvaro Luiz

    quarta-feira, 30 de outubro de 2013 14:44

Respostas

  • Na verdade seu regex verifica somente o primeiro caratere.

    O regex correto é:

       string verifica = "^[a-zA-Z0-9]+$";
                    if (Regex.IsMatch(password, verifica))
                    {
    
    }

    fonte:http://regexlib.com/REDetails.aspx?regexp_id=1014

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 15:00
    Moderador
  • Obrigatoriamente tem que ter letras E numeros.. ou é letras OU numeros (pode conter ou nao algun desses elementos)?

    O regex que eu enviei é para o segundo caso. GIRAFALES, KIKO, CHAVEZ, BRUXA DO 71 sao validos

    Agora se for para o primieiro caso eu sugiro usar:

    ^(?=.*\d).{4,10}$

    que força a inclusai de pelo menos um digito e tem que ter no minimo 4 e no maximo 10 caracteres

    neste caso BRUXADO71 passa mas GIRAFALES nao.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 18:38
    Moderador
  • ^(?=.*\d).{6,10}$

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 19:03
    Moderador
  • Voce tem que colocar um arroba na frente da expressao:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    
    using System.Text.RegularExpressions;
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                string password = "testsss1";
                string verifica = @"^(?=.*\d).{6,10}$";
                if (Regex.IsMatch(password, verifica))
                { Console.Write("OK"); }
                else
                { Console.Write("nao OK"); }
                Console.ReadKey();
            }
        }
    }
    

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 19:25
    Moderador

Todas as Respostas

  • Na verdade seu regex verifica somente o primeiro caratere.

    O regex correto é:

       string verifica = "^[a-zA-Z0-9]+$";
                    if (Regex.IsMatch(password, verifica))
                    {
    
    }

    fonte:http://regexlib.com/REDetails.aspx?regexp_id=1014

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 15:00
    Moderador
  • Olá William! Obrigado pela resposta

    fiz como voce sugeriu:

      string password = txtSenha1.Text.Trim();
                    string verifica = "^[a-zA-Z0-9]+$";
                    if (Regex.IsMatch(password, verifica))
                    {

    }

    mas continua sem filtrar, digito "GIRAFALES" e continua entrando no IF, gostaria que permitisse apenas texto digitado que contém letras e números


    Álvaro Luiz


    • Editado Álvaro Luiz quarta-feira, 30 de outubro de 2013 17:38
    quarta-feira, 30 de outubro de 2013 17:37
  • Obrigatoriamente tem que ter letras E numeros.. ou é letras OU numeros (pode conter ou nao algun desses elementos)?

    O regex que eu enviei é para o segundo caso. GIRAFALES, KIKO, CHAVEZ, BRUXA DO 71 sao validos

    Agora se for para o primieiro caso eu sugiro usar:

    ^(?=.*\d).{4,10}$

    que força a inclusai de pelo menos um digito e tem que ter no minimo 4 e no maximo 10 caracteres

    neste caso BRUXADO71 passa mas GIRAFALES nao.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 18:38
    Moderador
  • Obrigatoriamente tem que ter LETRAS e NÚMEROS, no mínimo 6 e no máximo 10

    Álvaro Luiz

    quarta-feira, 30 de outubro de 2013 18:53
  • ^(?=.*\d).{6,10}$

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 19:03
    Moderador
  • Deu o seguinte erro na letra "d" ficou sublinhado com o erro abaixo

    Erro 1 Seqüência de escape não reconhecida

    Álvaro Luiz

    quarta-feira, 30 de outubro de 2013 19:12
  • Voce tem que colocar um arroba na frente da expressao:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    
    using System.Text.RegularExpressions;
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                string password = "testsss1";
                string verifica = @"^(?=.*\d).{6,10}$";
                if (Regex.IsMatch(password, verifica))
                { Console.Write("OK"); }
                else
                { Console.Write("nao OK"); }
                Console.ReadKey();
            }
        }
    }
    

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Álvaro Luiz quarta-feira, 30 de outubro de 2013 22:15
    quarta-feira, 30 de outubro de 2013 19:25
    Moderador
  • Valew William!

    Parada resolvida muito obrigado 


    Álvaro Luiz

    quarta-feira, 30 de outubro de 2013 22:14