在JavaScript或jQuery中检查一个值是否为数字

129

可能是重复问题:
在 JavaScript 中验证数字 - IsNumeric()

var miscCharge = $("#miscCharge").val();

我想要检查misCharge是不是数字。在jQuery或JavaScript中是否有任何方法或简单的方式可以实现这一点?

HTML是

<g:textField name="miscCharge"  id ="miscCharge" value="" size="9" max="100000000000" min="0" />

1
https://dev59.com/3nVD5IYBdhLWcg3wU56H - jon3laze
3个回答

196
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

15
这个更好:return !isNaN(+n) && isFinite(n)。因为对于带有结尾字母的数字字符串,parseFloat | parseInt将返回true,而第二个检查isFinite将返回false。而使用一元运算符'+', 它将立即失败。 - Arman
11
"!isNaN(+n) && isFinite(n)" 将空字符串归类为数字。 - thenickdude
3
我不确定这是否是有意的,但 isNumber( ['5'] ) 也会返回 true - 但它不是一个数字,而是包含一个数字的数组。 - Katai
1
在一行中:+str +'' === str - basil

34

你有多种选择,具体取决于你想如何进行:

isNaN(val)

如果val不是数字则返回true,否则返回false。在您的情况下,这可能是您需要的。

isFinite(val)

如果将val转换为字符串后是一个数字且不等于+/- Infinity,则返回true

/^\d+$/.test(val)

如果将val转为字符串后,只包含数字,则返回true(可能不是你需要的)。


1
投反对票是因为您的正则表达式无法处理val-11.5的情况。 - transang
值得注意的是,空字符串的评估结果并非您所期望的:isNaN('') == falseisFinite('') == true - Derek Soike
@transang 如果您想测试整数,否则使用正则表达式可能是唯一可靠的方法。 - Kirill G.

6

有一个名为isNaN的函数,如果它是(非数字)则返回true,因此您可以通过这种方式检查数字

if(!isNaN(miscCharge))
{
   //do some thing if it's a number
}else{
   //do some thing if it's NOT a number
}

希望它能正常工作


isNaN(null) returns false, isNaN("") returns false - Duc Filan
isNaN(true)isNaN(false)也会返回false。 - Roberto Maldonado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接