none
C# - Problema com Classe RegexUtilities RRS feed

  • Pergunta

  • Caros amigos

    Estou escrevendo um sistema com finalidade de estudos e criei uma Classe RegexUtilities.cs para controle de erro de e-mail's.

    Infelizmente está dando alguns erros que não entendo.

    Observação: esta rotina foi escrita usando o Visual Studio 2012 e eu estou usando o Visual Studio 2010.

    Abaixo o meu código:

    using System;
    using System.Globalization;
    using System.Text.RegularExpressions;
    
    public class RegexUtilities
    {
        bool invalid = false;
    
        public bool IsValidEmail(string strIn)
        {
            invalid = false;
            if (String.IsNullOrEmpty(strIn))
                return false;
    
            // Use IdnMapping class to convert Unicode domain names.
            try
            {
                strIn = Regex.Replace(strIn, @"(@)(.+)$", this.DomainMapper,
                                      RegexOptions.None, TimeSpan.FromMilliseconds(200));
            }
            catch (RegexMatchTimeoutException)
            {
                return false;
            }
    
            if (invalid)
                return false;
    
            // Return true if strIn is in valid e-mail format.
            try
            {
                return Regex.IsMatch(strIn,
                      @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
                      @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,24}))$",
                      RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
            }
            catch (RegexMatchTimeoutException)
            {
                return false;
            }
        }
    
        private string DomainMapper(Match match)
        {
            // IdnMapping class with default property values.
            IdnMapping idn = new IdnMapping();
    
            string domainName = match.Groups[2].Value;
            try
            {
                domainName = idn.GetAscii(domainName);
            }
            catch (ArgumentException)
            {
                invalid = true;
            }
            return match.Groups[1].Value + domainName;
        }
    }

    Como os amigos pode verificar, as linhas em destaque.

    Imagem erro de Classe

    Grato a todos.

    Atenciosamente,

    Renato

    sábado, 6 de setembro de 2014 23:37

Respostas

  • Dê um clear na sua solution e depois rebuild.

    A principio existem alguns erros fáceis de identificar:

    Em RegexMatchTimeoutException você não definiu o nome da variável, coloque um e na frente. Veja: http://msdn.microsoft.com/pt-br/library/0yd65esw.aspx, porém ainda existirá um erro explicado abaixo:

    O Replace e IsMatch estão escritos corretamente, porém a opção de TimeSpan só passou a existir apartir do .NET Framework 4.5. Basta remover o TimeSpan dos dois métodos e do catch.

    Na próxima poste os erros dispostos na guia Error List, você pode encontra-la em View/Error List. Sem os erros fica difícil adivinhar o que está acontecendo ai.


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    domingo, 7 de setembro de 2014 05:32
  • Caro amigo

    Consegui resolver o problema.

    Grato,

    Renato


    terça-feira, 9 de setembro de 2014 16:54

Todas as Respostas

  • Dê um clear na sua solution e depois rebuild.

    A principio existem alguns erros fáceis de identificar:

    Em RegexMatchTimeoutException você não definiu o nome da variável, coloque um e na frente. Veja: http://msdn.microsoft.com/pt-br/library/0yd65esw.aspx, porém ainda existirá um erro explicado abaixo:

    O Replace e IsMatch estão escritos corretamente, porém a opção de TimeSpan só passou a existir apartir do .NET Framework 4.5. Basta remover o TimeSpan dos dois métodos e do catch.

    Na próxima poste os erros dispostos na guia Error List, você pode encontra-la em View/Error List. Sem os erros fica difícil adivinhar o que está acontecendo ai.


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    domingo, 7 de setembro de 2014 05:32
  • 1 - Erro que acontece2 e 3 - Erro que ocorre
    terça-feira, 9 de setembro de 2014 00:03
  • É exatamente o que disse na resposta anterior.

    Em RegexMatchTimeoutException você não definiu o nome da variável, coloque um e na frente. Veja: http://msdn.microsoft.com/pt-br/library/0yd65esw.aspx, porém ainda existirá um erro explicado abaixo:

    O Replace e IsMatch estão escritos corretamente, porém a opção de TimeSpan só passou a existir apartir do .NET Framework 4.5. Basta remover o TimeSpan dos dois métodos e do catch.


    "just because you've abandoned your hopes of becoming a great thinker or scientist, don't give up on attaining freedom, achieving humility, serving others..." - 7.67 - Meditations - Marcus Aurelius

    terça-feira, 9 de setembro de 2014 02:57
  • Caro amigo

    Consegui resolver o problema.

    Grato,

    Renato


    terça-feira, 9 de setembro de 2014 16:54