61 votos

Expresiones regulares de JavaScript - caracteres no numéricos de reemplazar

Esto funciona:

var.replace(/[^0-9]+/g, '');  

Ese fragmento simple reemplazará cualquier cosa que no es un número con nada.

Pero decimales son reales también. Por lo tanto, estoy tratando de averiguar cómo incluir un período.

Estoy seguro que es muy simple, pero mis pruebas no funcionan.

88voto

Jacob Mattison Puntos 32137

¿Se escapó el período?var.replace(/[^0-9\.]+/g, '');

8voto

Jeff B Puntos 20021

La sustitución de algo que no es una serie es un poco más complicada que la sustitución de algo que es un número.

Aquellos que sugiere agregar, simplemente, el punto, se ignora el hecho de que . también se utiliza como un período, por lo que:

This is a test. 0.9, 1, 2, 3 será .0.9123.

La específica regex en su problema dependerá en gran medida de la finalidad. Si sólo tiene un único número en una cadena, usted podría hacer esto:

var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")

Este se encuentra el primer número, y sustituye toda la cadena con la que corresponde un número.

5voto

Levi Hackwith Puntos 3898

Prueba esto:

var.replace(/[^0-9\\.]+/g, '');

2voto

dkinzer Puntos 6339

Si no quieres coger dirección IP junto con decimales:

var.replace(/[^0-9]+\\.?[0-9]*/g, '');

Que sólo cogen números con períodos de uno o cero

2voto

Eric Puntos 36290

Prueba esto:

var.replace(/[0-9]*\.?[0-9]+/g, '');

Que solo coincide con decimales válidas (por ejemplo, "1", "1.0", ". 5", pero no "1.0.22")

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X