none
expresión regular de horas especiales RRS feed

Respuestas

  • La forma senizlla de hacer lo que dices sin regex es con un tex box y en los eventos focus y lost focus hacer que aparezca el valor de ":" en las posicion del string ingresado cuando pierda el foco y quitarlo con replace (":","") cuando tenga el foco.

    Una vez controlado eso cuadno tenga el foco y el valor este sin ":" se trata de valdiar que solo se puedne introducir numeros y que el valro numerico de los numeros no puede ser mayo que 2629. Yo lo haria en el evento keyup y si el char inotrducido no es isdigit o el valro numerico es mayor que 2629 no dejaria introducirlo. 

    es decir el text box solo deja ingressar numeros y nunca deja poner un texto que pasado a entero sea mayor 2629.

    Luego al perder el foco haces que aaprezca el caracters ":" haciedno un substring. y tambien formateas el textbox con "0" a la izquierda del texto si la logntitut no es 4.

    martes, 13 de febrero de 2018 11:59
  • Puedes agrupar mediante la expresión los digitos y ":" para luego hacer split y verificar el rango de hora, si se cumple cargas la hora ej:

        string patron = "[\\d]{2}:[\\d]{2}";
        MatchCollection Match1 = Regex.Matches(TextBox1.Text, patron, RegexOptions.IgnoreCase);
        string result = "";
        if (!Match1.Count == 0)
        {
            foreach (Match match in Match1)
            {
                string[] separar = match.Value.Split(':');
                if (Int(separar[0]) >= 0 & Int(separar[0]) <= 26)
                {
                    if (Int(separar[1]) >= 0 & Int(separar[1]) <= 29)
                    {
                        result += match.Value + Environment.NewLine;
                    }
                }
            }
    
            MessageBox.Show(result);
        }
        else
        {
            MessageBox.Show("no hay coincidencias");
        }

             

    Lo pruebas y comenta

    Saludos

    Edito; Perdón lo traduje de VB a C# y dio cualquier cosa


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗




    martes, 13 de febrero de 2018 15:30

Todas las respuestas

  • La forma senizlla de hacer lo que dices sin regex es con un tex box y en los eventos focus y lost focus hacer que aparezca el valor de ":" en las posicion del string ingresado cuando pierda el foco y quitarlo con replace (":","") cuando tenga el foco.

    Una vez controlado eso cuadno tenga el foco y el valor este sin ":" se trata de valdiar que solo se puedne introducir numeros y que el valro numerico de los numeros no puede ser mayo que 2629. Yo lo haria en el evento keyup y si el char inotrducido no es isdigit o el valro numerico es mayor que 2629 no dejaria introducirlo. 

    es decir el text box solo deja ingressar numeros y nunca deja poner un texto que pasado a entero sea mayor 2629.

    Luego al perder el foco haces que aaprezca el caracters ":" haciedno un substring. y tambien formateas el textbox con "0" a la izquierda del texto si la logntitut no es 4.

    martes, 13 de febrero de 2018 11:59
  • Puedes agrupar mediante la expresión los digitos y ":" para luego hacer split y verificar el rango de hora, si se cumple cargas la hora ej:

        string patron = "[\\d]{2}:[\\d]{2}";
        MatchCollection Match1 = Regex.Matches(TextBox1.Text, patron, RegexOptions.IgnoreCase);
        string result = "";
        if (!Match1.Count == 0)
        {
            foreach (Match match in Match1)
            {
                string[] separar = match.Value.Split(':');
                if (Int(separar[0]) >= 0 & Int(separar[0]) <= 26)
                {
                    if (Int(separar[1]) >= 0 & Int(separar[1]) <= 29)
                    {
                        result += match.Value + Environment.NewLine;
                    }
                }
            }
    
            MessageBox.Show(result);
        }
        else
        {
            MessageBox.Show("no hay coincidencias");
        }

             

    Lo pruebas y comenta

    Saludos

    Edito; Perdón lo traduje de VB a C# y dio cualquier cosa


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗




    martes, 13 de febrero de 2018 15:30