检查字符是否是数字?
我需要检查justPrices[i].substr(commapos+2,1) 。 
string是这样的:“blabla,120”
在这种情况下,它会检查'0'是否是一个数字。 如何才能做到这一点?
 只要使用isNaN()来检查它是不是一个数字: 
 if (!isNaN(parseInt(justPrices[i].substr(commapos + 2, 1), 10))) { // Is a number } 
您可以使用比较运算符来查看它是否在数字字符的范围内:
 var c = justPrices[i].substr(commapos+2,1); if (c >= '0' && c <= '9') { // it is a number } else { // it isn't } 
 你既可以使用parseInt ,也可以使用isNaN检查 
或者如果你想直接在你的string上工作,你可以像这样使用正则expression式:
 function is_numeric(str){ return /^\d+$/.test(str); } 
 这里是jQuery的isNumeric实现(在纯JavaScript中),它可以处理完整的string: 
 function isNumeric(obj) { return !isNaN(obj - parseFloat(obj)); } 
这个函数的注释如下:
// parseFloat NaNs numeric-cast false positives(null | true | false |“”)
// …但曲解前导数字string,尤其是hex文字(“0x …”)
//减法强制NaN的无穷大
我想我们可以相信,这些队伍已经花了相当多的时间在这个!
在这里评论来源。 超级怪胎在这里讨论。
你可以使用这个:
 function isDigit(n) { return Boolean([true, true, true, true, true, true, true, true, true, true][n]); } 
在这里,我将它与接受的方法进行了比较: http : //jsperf.com/isdigittest/5 。 我没有期待太多,所以当我发现接受的方法要慢得多的时候,我感到很惊讶。
有趣的是,虽然接受的方法是更快的正确input(例如'5'),并且对于不正确的(例如'a')较慢,但是我的方法是完全相反的(对于错误而言是快速的,对于正确的是较慢的)。
不过,在最坏的情况下,我的方法比正确input的可接受解决scheme快2倍,错误input快5倍。
我想知道为什么没有人发布解决scheme,如:
 var charCodeZero = "0".charCodeAt(0); var charCodeNine = "9".charCodeAt(0); function isDigitCode(n) { return(n >= charCodeZero && n <= charCodeNine); } 
与一个像这样的调用:
 if (isDigitCode(justPrices[i].charCodeAt(commapos+2))) { ... // digit } else { ... // not a digit } 
 我觉得想办法解决这个问题很有趣。 下面是一些。 
  (下面的所有函数都假定参数是单个字符,改为n[0]来强制执行) 
方法1:
 function isCharDigit(n){ return !!n.trim() && n > -1; } 
方法2:
 function isCharDigit(n){ return !!n.trim() && n*0==0; } 
方法3:
 function isCharDigit(n){ return !!n.trim() && !!Number(n+.1); // "+.1' to make it work with "." and "0" Chars } 
方法4:
 var isCharDigit = (function(){ var a = [1,1,1,1,1,1,1,1,1,1]; return function(n){ return !!a[n] // check if `a` Array has anything in index 'n'. Cast result to boolean } })(); 
方法5:
 function isCharDigit(n){ return !!n.trim() && !isNaN(+n); } 
testingstring:
 var str = ' 90ABcd#?:.+', char; for( char of str ) console.log( char, isCharDigit(char) ); 
如果您正在testing单个字符,则:
 var isDigit = (function() { var re = /^\d$/; return function(c) { return re.test(c); } }()); 
将根据c是否是数字来返回true或false。
 isNumber = function(obj, strict){ var strict = strict === true ? true : false; if(strict){ return !isNaN(obj) && obj instanceof Number ? true : false; }else{ return !isNaN(obj - parseFloat(obj)); } } 
输出没有严格模式:
 var num = 14; var textnum = '14'; var text = 'yo'; var nan = NaN; isNumber(num); isNumber(textnum); isNumber(text); isNumber(nan); true true false false 
严格模式输出:
 var num = 14; var textnum = '14'; var text = 'yo'; var nan = NaN; isNumber(num, true); isNumber(textnum, true); isNumber(text, true); isNumber(nan); true false false false 
 function is_numeric (mixed_var) { return (typeof(mixed_var) === 'number' || typeof(mixed_var) === 'string') && mixed_var !== '' && !isNaN(mixed_var); } 
源代码
 square=function(a) { if ((a * 0) == 0) { return a*a; } else return "Enter a valid number." } 
来源: http : //jacksondunstan.com/articles/983
你可以试试这个(在我的情况下工作)
如果你想testing一个string的第一个字符是否是int:
 if (parseInt(YOUR_STRING.slice(0,1))){ alert("first char is int") }else{ alert("first char is not int") } 
如果你想testing一下char是否是int:
 if (parseInt(YOUR_CHAR)){ alert("first char is int") }else{ alert("first char is not int") } 
这似乎工作:
静态绑定:
 String.isNumeric = function (value) { return !isNaN(String(value) * 1); }; 
原型绑定:
 String.prototype.isNumeric = function () { return !isNaN(this.valueOf() * 1); }; 
它将检查单个字符,以及整个string,看看它们是否是数字。
 var Is = { character : { number : (function() { // Only computed once var zero = "0".charCodeAt(0); var nine = "9".charCodeAt(0); return function(c) { return (c = c.charCodeAt(0)) >= zero && c <= nine; } })() } }; 
 只要使用isFinite 
 const number = "1"; if (isFinite(number)) { // do something }