2011-07-11 46 views
34

¿Cómo se pueden eliminar letras, símbolos como ∞§¶•ªºº«≥≤÷ pero dejando los números simples 0-9, quiero poder dejar letras o ciertos símbolos en un campo de entrada, pero dejar solo números .Regex para eliminar letras, símbolos excepto números

Demo.

Si coloca símbolos como ¡ € # ¢ ∞ § ¶ • ª o de lo contrario, aún no lo elimina del campo de entrada. ¿Cómo se eliminan los símbolos también? El modificador \w tampoco funciona.

+0

'\ w' no es un modificador sino un atajo de' [A-Za-z0-9_] 'o * caracteres de palabra *. – alex

Respuesta

61

Puede utilizar \D lo que significa que no dígitos.

var removedText = self.val().replace(/\D+/g, ''); 

jsFiddle.

También podría usar el HTML5 number input.

<input type="number" name="digit" /> 

jsFiddle.

+2

Probablemente quiera reemplazar algo más que el primer dígito que no se haya encontrado - cambie la expresión regular a '/ \ D + /' –

+0

@Dog grito, gracias :) – alex

+5

¿no debería ser '/ \ D +/g'? – gnysek

5

Pruebe las siguientes expresiones regulares:

var removedText = self.val().replace(/[^0-9]/, ''); 

Esto corresponderá con cada personaje que es no (^) en el intervalo de 0-9.

Demo.

+0

Odio tener 32 segundos de retraso: D – bezmax

+0

@Max, no hay problema. A pesar de esto, usted fue el que se subió primero :-) –

17

simple:

var removedText = self.val().replace(/[^0-9]+/, ''); 

^- significa no

+0

var removedText = self.val(). Replace (/ [^ 0-9] +/g, ''); para mantener todos los números. aunque 8.10 + 3 daría 8103 ... No estoy seguro de que eso sea lo que se pide en la pregunta. – Joeri

2

Si desea mantener sólo los números a continuación, utilizar /[^0-9]+/ en lugar de /[^a-zA-Z]+/

15

Uso /[^0-9.,]+/ si quieres flotadores.

+1

Si desea una cadena que podría contener un valor flotante;) – alex

Cuestiones relacionadas