Me preguntaba si se podrían agregar más comprobaciones: [Pregunta respondida previamente] ( Trying to build a regular expression to check pattern).Intentando crear una expresión regular para verificar el patrón - 2
El problema anterior se resuelve brillantemente el uso de esta expresión regular por Brian Rogers:
/^([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?(,([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?)*$/
[Para referencia, registrando el problema mayor de nuevo]
- empezar y terminar con un número
- El guión debe comenzar y terminar con un número
- La coma debe comenzar y terminar con un número
- El rango del número debe ser de 1-31
- Si un número comienza con un guión (-), no puede terminar con ningún otro carácter que no sea una coma Y siga todas las reglas enumeradas anteriormente.
E.g. 2-2,1
O 2,2-1
es válido, mientras que 1-1-1-1
no es válido.
Ej:
- 1-5,5,15-29
- 1,28,1-31,15
- 15,25,3 - 1-24,5-6,2- 9
¿Podría ir un paso más allá y agregar otras validaciones?
1) Los números deben estar en orden ascendente
Ej:
- 1,2-3 - Válido
- 4-6,23 - Válido
- 23,4-5 - Inválido
2) Los números no deben repetir
Ej:
a) 2,2,2 - Inválido
b) 2,3-6,3 - Inválido
c) 2,5,7-20 - Válido
3) Si es posible Número
no debe repetir si se ha definido anteriormente en la gama
Ej:
a) 2,3-6, 4 - no válida, porque 4 ya es un número entre 3 y 6
b) 12-16, 14-18 - Inválido, porque 14,15 y 16 ya están definidos en 12-16
c) 9-13, 15, 17-19 - Válido
No, estás comenzando a hacer preguntas que dependen de la * interpretación * de las secuencias de caracteres particulares (por ejemplo, que 3-6 representa los números enteros 3, 4, 5 y 6). No puedes tratar con tales cosas en una expresión regular. –
Puede ser que encuentre [esta pregunta] (http://stackoverflow.com/questions/3907019/how-to-reduce-lists-of-ranges) usefull [1]: http: // stackoverflow. com/questions/3907019/how-to-reduce-lists-of-ranges – Toto
@ M42 - para enlaces en comentarios, ponga texto entre corchetes ('[]'), y luego la URL inmediatamente después entre corchetes ('() '), Ej. '[esta pregunta] (http: // en algún lugar)' –