Regex para reemplazar todo excepto números y un punto decimal

113

Tengo un campo de texto que debe ser solo texto o decimal. Aquí está el código que estoy usando actualmente para reemplazar todo excepto los números y el punto decimal. El problema es que no puedo encontrar una expresión regular que identifique todo lo demás

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

El \ D funciona bien, pero lo he intentado (?!.), (?!\.), [^.], [^\.]y así sucesivamente ...

¿Alguna sugerencia para una expresión regular que se identifique positivamente con cualquier cosa excepto un número o un decimal?

Gracias por la ayuda

gremio
fuente
en caso de que esté buscando verificar números reales en lugar de dígitos numéricos: stackoverflow.com/questions/42328875/…
cregox

Respuestas:

239

Utilizar este:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");
Chandu
fuente
1
@Hugo, esto no permite nada, simplemente no debe pasar una cadena que podría contener más puntos decimales y preprocesarla primero. Es como decir que la cadena permite cada carácter ...
jave.web
3
Luego, ejecute el valor devuelto a través de parseFloat. Eso eliminará puntos decimales adicionales. Ej .parseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon
1
Esto es excelente para convertir números ya formateados, como dinero, en un flotador computable.
lu1s
8

Eliminar solo la parte decimal se puede hacer de la siguiente manera:

number.replace(/(\.\d+)+/,'');

Esto convertiría 13.6667px en 13px (dejando las unidades px intactas).

lubosdz
fuente
7

Prueba esto:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");

Casa en la playa
fuente
2
la mejor respuesta. Elimina 0.000 10.000000 .22 2.234, pero conserva 1, 10, 10.1, 10.22
Robert Baker
Esta expresión parece complicada, ¿podría explicar cómo funciona o qué eliminaría exactamente?
Minderov
Esto no funciona con entradas cirílicas como "5.12 руб".
Minderov
4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - cadena vacía de resultado
yAnTar