Expresión regular para aceptar números enteros, valores decimales y limitar por un valor máximo.
Necesito una expresión regular que acepte solo números enteros o decimales de 1 a 9999.99. Intenté esto:
^(?:[1-9][0-9]{0,4}(?:.\d{1,2})?|9999|9999.99)$
pero también acepta 10000.
davy.ai
Para corregir la expresión regular y aceptar solo enteros o decimales del 1 al 9999.99, podemos modificarla de la siguiente manera:
^(?:[1-9][0-9]{0,3}(?:\.[0-9]{1,2})?|9999(?:\.0{1,2})?)$
Explicación:
–
^
y$
anclan la expresión regular al principio y al final de la cadena, respectivamente.–
(?:)
crea un grupo no capturador.–
[1-9][0-9]{0,3}
coincide con enteros del 1 al 9999.–
(?:\.[0-9]{1,2})?
coincide con la parte decimal del número, si está presente.–
9999(?:\.0{1,2})?
coincide con 9999 o 9999.00 hasta 9999.99.–
?
hace que la parte decimal sea opcional.Esta expresión regular solo debe coincidir con enteros o decimales válidos dentro del rango de 1 a 9999.99 y no aceptar ningún número fuera de ese rango.