2009-08-29 267 views
27

如何检查变量是数字,整数还是字符串数字?检查变量是否是数字

在PHP中我可以这样做:

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

或者:

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

我该怎么办呢jQuery的/ JavaScript的?

+0

我假设你正试图避免往返到您的服务器进行测试?这将是大脑死亡的简单方法;) – 2009-08-29 22:51:43

回答

22

我与

isFinite(String(foo)) 

去看this answer一个解释这是为什么。如果你只想接受整数值,look here

+5

小心这个。 'isFinite(null)=== true' – 2013-09-04 22:58:57

+1

isFinite(“100”)是真的,我们想知道一个对象是一个Number对象。从我的简短测试看起来像这里的解决方案(Object.prototype.toString.call(obj)===“[object Number]”)是最好的:http://stackoverflow.com/questions/1303646/check-shather -variable-is-number-or-string-in-javascript – Skychan 2015-08-24 19:59:32

+0

也用空字符串返回true,我不会考虑“数字” – Balmipour 2017-04-01 23:15:27

37

JavaScript函数isNaN(variable)应该做的伎俩。如果数据不是数字,它将返回true。

+1

另请参阅http://www.javascripter.net/faq/numbervs.htm – 2009-08-29 22:52:26

+0

这是一个很好的建议。 FWIW,这是有效的,因为字符串被隐式转换为数字 - 显式代码是:'isNaN(new Number(variable))'。请注意,如果您希望将代码限制为整数,'parseInt()'将返回'NaN'(可通过'isNaN()'测试)。请注意,'parseInt()'会很高兴地忽略字符串末尾的非数字数字。 – Shog9 2009-08-29 23:05:54

+1

这将接受所有可以转换为数字的东西,包括布尔值和“无限”。更好地使用'isFinite(String(foo))' – Christoph 2009-08-30 10:43:37

1

isNan

编辑:请看看克里斯托弗已经上文建议。建议使用isFinite是有意义的。

+0

'isNaN()'隐式转换为类型编号,所以你会得到误报! – Christoph 2009-08-30 10:48:56

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

isNumber({}) // false 

isNumber('13') // true 

isNumber(13) // true 

isNumber('test') // false 
+3

使用“123a”进行测试会返回误报 - parseInt()调用将丢弃“a”,但不会更新该值,也不会更新源字段。 – 2009-08-29 22:54:17

+2

字符串'13'不是一个数字! – 2014-07-11 12:23:34

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

我很新的JavaScript,但它似乎像typeof(blah)让你检查是否是一个数字(它不对字符串说)。一个知道OP要求字符串+数字,但我认为这可能是值得为其他人记录。

如:

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

这里有the docs

这里是一个什么样的typeof会产生一些控制台上运行:

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

一个轻微的古怪我所知道的是

typeof(NaN); 
"number" 

但它不会是JavaScript没有这样的东西?!

1

你应该使用:

var x = 23; 
var y = 34hhj; 

isNaN(x); 
isNaN(y); 

它将返回true,如果它的字符串和虚假如果它的一个数字。

0

您应该使用

简单的方法来检查给定值是否是数字,通过使用“如果条件”

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

如果我们是路过的值是一个整数,它将返回true ..

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

注意,空字符串''' 'isNaN和视为号码。