2009-08-29 27 views
27

¿Cómo puedo verificar que una variable sea un número, ya sea un número entero o un dígito de cadena?Compruebe que la variable es un número

En PHP que podía hacer:

if (is_int($var)) { 
    echo '$var is integer'; 
} 

O:

if (is_numeric($var)) { 
    echo '$var is numeric'; 
} 

¿Cómo lo puedo hacer en jQuery/JavaScript?

+0

Estoy asumiendo que usted está tratando de evitar una ida y vuelta a su servidor para probar? Esa sería la forma más fácil de entenderlo;) –

Respuesta

22

me gustaría ir con

isFinite(String(foo)) 

Ver this answer para una explicación de por qué. Si solo quiere aceptar valores enteros, look here.

+5

Ten cuidado con esto. 'isFinite (null) === true' –

+1

isFinite (" 100 ") es verdadero, queremos saber que un objeto es un objeto Number. De mi breve prueba, parece que la solución aquí (Object.prototype.toString.call (obj) === "[object Number]") es la mejor: http://stackoverflow.com/questions/1303646/check-whether -variable-es-número-o-cadena-en-javascript – Skychan

+0

También devuelve verdadero con una cadena vacía, que no consideraría un "número" – Balmipour

37

La función javascript isNaN(variable) debería hacer el truco. Devuelve verdadero si los datos no son un número.

+1

También vea http://www.javascripter.net/faq/numbervs.htm –

+0

Esta es una buena sugerencia. FWIW, esto funciona porque las cadenas se convierten implícitamente a números: el código explícito es: 'isNaN (Número nuevo (variable))'. Tenga en cuenta que si desea restringir el código a enteros, 'parseInt()' devolverá 'NaN' (comprobable a través de' isNaN() '). Tenga en cuenta que 'parseInt()' ignorará felizmente los dígitos no numerados al final de la cadena. – Shog9

+1

esto aceptará todo lo que se pueda convertir a un número, incluidos los valores booleanos y ''infinity''; mejor uso 'isFinite (String (foo))' – Christoph

1

Ver isNan

EDIT: Por favor, mira lo que Christoph ha sugerido anteriormente. Tiene sentido usar isFinite como se sugiere.

+0

'isNaN()' se convierte implícitamente a número de tipo para que obtenga falsos positivos. – Christoph

11
function isNumber(input) { 
    return !isNaN(input); 
} 

isNumber({}) // false 

isNumber('13') // true 

isNumber(13) // true 

isNumber('test') // false 
+3

La prueba con "123a" devuelve un falso positivo: la llamada parseInt() deja caer la "a" pero no actualiza el valor ni el campo de origen. –

+2

¡la cadena '13' no es un número! –

1
function isNumeric($probe) 
{ 
    return parseFloat(String($probe)) == $probe; 
} 
3

Soy bastante nuevo en javascript pero parece que typeof(blah) te permite verificar si algo es un número (no dice verdadero para las cadenas). A saber que OP pidió cadenas + números, pero pensé que valía la pena documentar para otras personas.

por ejemplo:

function isNumeric(something){ 
    return typeof(something) === 'number'; 
} 

Éstos son the docs

y estos son algunos aspectos ejecuta la consola de lo typeof produce:

typeof(12); 
"number" 
typeof(null); 
"object" 
typeof('12'); 
"string" 
typeof(12.3225); 
"number" 

una leve rareza soy consciente de es

typeof(NaN); 
"number" 

pero no sería javascript sin algo así, ¿verdad?

1

que puedes usar:

var x = 23; 
var y = 34hhj; 

isNaN(x); 
isNaN(y); 

Se devolverá verdadero si la cadena y falso si es un número.

0

Debe utilizar

forma sencilla de comprobar si el valor es determinado número utilizando "si la condición"

function isInteger(value)  
{  
    num=value.trim();   
    return !(value.match(/\s/g)||num==""||isNaN(num)||(typeof(value)=='number');   
} 

se devolverá verdadero si el valor de lo que estamos pasando es un entero ..

solved for  
value=""  //false null  
value="12" //true only integers  
value="a"  //false  
value=" 12" //false  
value="12 " //false   
value=" "  //false space   
value="$12" //false special characters 
value="as12" //false 
0

Tenga en cuenta que una cadena vacía '' y ' ' serán considerados como el número de isNaN y isFinite.

Cuestiones relacionadas