la expresión regular anterior no es perfecta ya que acepta "09", que no es un número válido. una mejor expresión sería:
"^(-?)(0|([1-9][0-9]*))(\\.[0-9]+)?$"
donde: "(. \ [0-9] * [1-9])?"
1. is an optional negative sign;
2. is zero or a valid non-zero integer;
4. is the optional fracture part;
en teoría, la herramienta de fractura debe ser escrita como en su lugar, porque un número no debe tener ceros de cola. En la práctica, la cadena de origen podría haber sido creado con un número fijo de dígitos por ejemplo:
printf("%.1f", x);
por lo que podría terminar fácilmente con un carácter cero. y, por supuesto, todas estas son representaciones de puntos fijos, no las dobles. un número doble puede escribirse como -1.23e-4 también en lugar de -0.000123.
¿Por qué crees que no funciona? Dar un ejemplo. –
@AndrewLogvinov +1, "does not work gimme teh codez" no es una buena forma de pregunta. –
espacios en blanco al principio o al final tal vez? ¿Puedes publicar el código que lo está usando? –