2009-11-22 17 views
159

Quiero verificar si una cadena contiene solo dígitos. Utilicé esto:Verificar si la cadena contiene solo dígitos

var isANumber = isNaN(theValue) === false; 

if (isANumber){ 
    .. 
} 

.. pero me di cuenta de que también permite + y -. Básicamente, quiero asegurarme de que la entrada contenga SOLAMENTE dígitos y ninguna otra letra. Dado que +100 y -5 son ambos números, isNaN, no es el camino correcto a seguir. ¿Quizás una expresión regular es lo que necesito? ¿Algun consejo?

Respuesta

348

¿qué tal

var isnum = /^\d+$/.test(val); 
+4

Tener un vistazo a este post ... http://stackoverflow.com/questions/18082/validate -numbers-in-javascript-isnumeric – Jorge

+10

Debe usar [0-9] en lugar de \ d para ser más claro. \ d pretende hacer coincidir cualquier tipo de dígito, incluidos los de otros idiomas, aunque creo que JavaScript es una excepción donde \ d es solo 0-9. – mukunda

+0

¡Esto es genial! Tengo curiosidad ¿no se refiere al dígito que es decimal? – dewwwald

2

Bueno, se puede utilizar la siguiente expresión regular:

^\d+$ 
40
string.match(/^[0-9]+$/) != null; 
9
String.prototype.isNumber = function(){return /^\d+$/.test(this);} 
console.log("123123".isNumber()); // outputs true 
console.log("+12".isNumber()); // outputs false 
4

Esto es lo que quiere

function isANumber(str){ 
    return !/\D/.test(str); 
} 
4

Si desea apoyar incluso para valores de coma flotante (valores separados por punto), entonces usted puede utilizar esta expresión:

var isNumber = /^\d+\.\d+$/.test(value); 
+0

, sin embargo, si no usa un flotador en lugar de int, devolverá false, quizás usando "?" después de "." "resuelto eso. Sugiero esto /^\d+[\ .,\,]?\d+$/.test(value) para permitir coma y punto decimal (más tarde puede transformar la coma en punto) – Lucke

+0

@Lucke, la expresión regular que sugirió solo ser capaz de encontrar números con un decimal o más alto que 9. Si cambia el primer '\ d +' a '\ d *?', podrá hacer coincidir 0 - 9, así como números como .333 –

Cuestiones relacionadas