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


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, "");

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).


7

Prueba esto:

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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.