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
Ir a la versión completa