CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 dilema con expresiones regulares

(1/1)

nelson.nelis:
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 ---     Private Function valida(ByVal cadena As String) As Boolean        Dim objRegExp As New System.Text.RegularExpressions.Regex("^(d[0-4]ddddd?(:d|1[0-5]))$")        If objRegExp.IsMatch(cadena) Then            valida = True        Else            valida = False        End If    End Function  
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:
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 --- "^((([0-1]([0-9]{5}))|([3-4]([0-9]{5}):(d|1[0-5])))|([3-4][0-9]{5}))$"  
Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa