El enfoque de eliminar personajes ofensivos es potencialmente problemático. ¿Qué pasa si hay otro .
en la cuerda en alguna parte? ¡No se eliminará, aunque debería!
Al eliminar los no dígitos o puntos, la cadena joe.smith ($3,004.50)
se transformaría en lo que no se puede analizar .3004.50
.
En mi humilde opinión, es mejor hacer coincidir un patrón específico y extraerlo usando un grupo. Algo simple sería encontrar todas las comas, dígitos y puntos contiguos con regexp:
[\d,\.]+
Ejecución de prueba de muestra:
Pattern understood as:
[\d,\.]+
Enter string to check if matches pattern
> a2.3 fjdfadfj34 34j3424 2,300 adsfa
Group 0 match: "2.3"
Group 0 match: "34"
Group 0 match: "34"
Group 0 match: "3424"
Group 0 match: "2,300"
Luego, para cada coincidencia, elimine todas las comas y envíelo al analizador. Para manejar el caso de algo como 12.323.344
, podría hacer otra verificación para ver que una subcadena coincidente tenga como máximo una .
.
joe.smith ($3,004.50)
? Simplemente eliminar las clases de personajes ofensivos puede salir mal.