• Viernes 8 de Noviembre de 2024, 03:58

Autor Tema:  dilema con expresiones regulares  (Leído 889 veces)

nelson.nelis

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
dilema con expresiones regulares
« en: Miércoles 25 de Marzo de 2009, 17:30 »
0
Hola,

una consulta. alguien sabrá como hacer una expresión regular, para certificar el siguiente tipo de datos ?

1. 400001 (entre 0 y 499999)
2. 400001:15 (la parte anterior a : es igual a la restricción anterior, desde : en adelante es totalmente opcional, pero si hay un : entonces el valor a tomar luego del : es entre 0 a 15).

Intente hacer algo como lo que sigue:
Código: vb.net
  1.  
  2.     Private Function valida(ByVal cadena As String) As Boolean
  3.         Dim objRegExp As New System.Text.RegularExpressions.Regex("^(d[0-4]ddddd?(:d|1[0-5]))$")
  4.         If objRegExp.IsMatch(cadena) Then
  5.             valida = True
  6.         Else
  7.             valida = False
  8.         End If
  9.     End Function
  10.  
  11.  

respecto de la expresion regular:

1. La parte d[0-4]ddddd seria para limitar la parte antes de : entre 0 y 499999.
2. La parte ?(:d|1[0-5]) seria la parte opcional, y que en caso de que existan : entonces el valor posterior seria entre 0 a 15.

Alguien podría ayudarme, please.

Gracias

nelson.nelis

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: dilema con expresiones regulares
« Respuesta #1 en: Jueves 26 de Marzo de 2009, 15:46 »
0
Ya encontré la solución, era cosa de leer un poco y entender como funcan estas cosas. Aqui la solucion, si a alguien le interesa. Esto era para limitar lo que se conoce como direcciones Modbus.

Lo unico que me esta faltando, seria que para el caso de los valores inferiores a 100000 (es decir entre 0 y 99999) si yo ingreso un 15, la expresion regular sea capas de comprender que debe completar con ceros (por lo tanto el 15 quedaria 000015, si entra un 171 la expresion regular deba completar con ceros asi 000171).

No se si eso es posible, pero bueno allí les dejo la inquetud
Código: Visual Basic
  1.  
  2. "^((([0-1]([0-9]{5}))|([3-4]([0-9]{5}):(d|1[0-5])))|([3-4][0-9]{5}))$"
  3.  
  4.  

Saludos