Solución:
La razón por la que la segunda alternativa no coincide es porque solo permite una f
después del punto decimal. Eso necesita ser d+
.
Entonces necesitas envolver todo entre ^
y $
en un grupo, por lo que todas las alternativas coinciden con la cadena completa.
Tenías muchos paréntesis redundantes. Y d*
en la última alternativa debe ser d+
, de lo contrario, permitirá un número que esté completamente vacío o solo sea un signo.
^[+-]?([0-9]{1,3}(,[0-9]{3})*(.[0-9]+)?|d*.d+|d+)$
-
^
-> inicio de cadena -
[+-]?
-> coincide con opcional+
o-
carbonizarse -
([0-9]{1,3}(,[0-9]{3})*(.[0-9]+)?|d*.d+|d+)
-> todo el grupo tiene que coincidir[0-9]{1,3}(,[0-9]{3})*(.[0-9]+)
od*.d+
od+
-
[0-9]{1,3}(,[0-9]{3})*(.[0-9]+)
-> coincide con números con miles de separadores y tal vez separador decimal -
d*.d+
-> coincide con números con separador decimal, y tal vez dígitos antes del decimal -
d+
-> coincide con números sin separador decimal
-
-
$
-> fin de cadena
MANIFESTACIÓN
Puede utilizar esta expresión regular para la validación:
^[+-]?(?:d+|d{1,3}(?:,d{3})*)(?:.d*)?$
Demostración de RegEx
Coincide con los siguientes casos:
- Un número entero
- Un número de coma flotante
- Un número con separadores como
,
en el 3er lugar
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)