)在JavaScript中的方式来检查一个字符串是否是一个有效的数字?

我希望与旧的VB6 IsNumeric()函数有相同的概念空间吗?


要检查变量(包括字符串)是否是数字,请检查它是否不是数字:

无论变量包含的是字符串还是数字,这都可以工作。

isNaN(num)         // returns true if the variable does NOT contain a valid number

例子

isNaN(123)         // false
isNaN('123')       // false
isNaN('1e10000')   // false (This translates to Infinity, which is a number)
isNaN('foo')       // true
isNaN('10px')      // true

当然,如果你需要,你可以否定这一点。 例如,要实现您给出的IsNumeric示例:

function isNumeric(num){
  return !isNaN(num)
}

将包含数字的字符串转换为数字:

仅当字符串只包含数字字符时才起作用,否则返回NaN

+num               // returns the numeric value of the string, or NaN 
                   // if the string isn't purely numeric characters

例子

+'12'              // 12
+'12.'             // 12
+'12..'            // Nan
+'.12'             // 0.12
+'..12'            // Nan
+'foo'             // NaN
+'12px'            // NaN

将一个字符串松散地转换为数字

用于将“12px”转换为12,例如:

parseInt(num)      // extracts a numeric value from the 
                   // start of the string, or NaN.

例子

parseInt('12')     // 12
parseInt('aaa')    // NaN
parseInt('12px')   // 12
parseInt('foo2')   // NaN      These last two may be different
parseInt('12a5')   // 12       from what you expected to see. 

花车

请记住,与+num不同, parseInt (顾名思义)将通过切断小数点后的所有内容将float转换为整数(如果由于此行为而想使用parseInt() ,则可能更好关闭使用另一种方法):

+'12.345'          // 12.345
parseInt(12.345)   // 12
parseInt('12.345') // 12

空的字符串

空的字符串可能有点违反直觉。 +num将空字符串转换为零,并且isNaN()假定相同:

+''                // 0
isNaN('')          // false

parseInt()不同意:

parseInt('')       // NaN

你可以使用RegExp方式:

var num = "987238";

if(num.match(/^-{0,1}d+$/)){
  //valid integer (positive or negative)
}else if(num.match(/^d+.d+$/)){
  //valid float
}else{
  //not valid number
}

尝试isNan函数:

isNaN()函数确定一个值是否是非法数字(Not-a-Number)。

如果该值等于NaN,则此函数返回true。 否则它返回false。

此功能不同于特定于Number的Number.isNaN()方法。

全局isNaN()函数将测试值转换为数字,然后对其进行测试。

Number.isNan()不会将值转换为Number,并且不会为任何非Number类型的值返回true。

链接地址: http://www.djcxy.com/p/17455.html

上一篇: in) way in JavaScript to check if a string is a valid number?

下一篇: Unable to change binding after hard binding function using 'bind'