Expresión regular simple para un decimal con una precisión de 2
¿Cuál es la expresión regular para un decimal con una precisión de 2?
Ejemplos válidos:
123.12
2
56754
92929292929292.12
0.21
3.1
Ejemplos no válidos:
12.1232
2.23332
e666.76
El punto decimal puede ser opcional, y también pueden incluirse números enteros.
258
3
Los tokens regex válidos varían según la implementación. Una forma genérica es:
Más compacto:
Ambos suponen que ambos tienen al menos un dígito antes y otro después del decimal.
Para requerir que toda la cadena sea un número de esta forma, envuelva la expresión en etiquetas de inicio y fin como (en la forma de Perl's):
Para que coincida con los números sin un dígito inicial antes del decimal (
.12
) y los números enteros que tienen un punto final (12.
), mientras que excluye la entrada de un solo punto (.
), pruebe lo siguiente:Añadido
Envuelve la parte fraccionaria en
()?
para hacerla opcional. Tenga en cuenta que esto excluye las formas como12.
Incluyendo que sería más como^\d+\\\\\d.?\d{0,2}$
.Añadido
Usar
^\d{1,6}(\d.\d{1,2})?$
para detener la repetición y dar una restricción a la parte entera del valor decimal.Y como las expresiones regulares son horribles de leer, y mucho menos de entender, aquí está el equivalente verboso:
Puedes sustituir
[0-9]
por\d
en la mayoría de las implementaciones de expresiones regulares (incluyendo PCRE, la más común). Yo lo he dejado como[0-9]
porque creo que es más fácil de leer.Además, aquí está el sencillo script de Python que he utilizado para comprobarlo:
¿No hay que tener en cuenta la "e" de "e666,76"?
Con