JS判断值是否是数字

本文介绍了三种JavaScript中用于验证输入是否为有效数字的方法:使用isNaN()函数、正则表达式进行匹配以及针对整数的验证。每种方法都有详细的代码示例,并解释了其适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自这篇博客

1.使用isNaN()函数

isNaN()的缺点就在于 null、空格以及空串会被按照0来处理

NaN: Not a Number

/**
*判断是否是数字
*
**/

function isRealNum(val){
    // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除
    if(val === "" || val ==null){
        return false;
    }
    if(!isNaN(val)){
        return true;
    }else{
        return false;
    }
}

2.使用正则表达式 

/**
* 校验只要是数字(包含正负整数,0以及正负浮点数)就返回true
**/

function isNumber(val){

    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }

}

3
./**
* 校验正负正数就返回true
**/

function isIntNum(val){
    var regPos = / ^\d+$/; // 非负整数
    var regNeg = /^\-[1-9][0-9]*$/; // 负整数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }
}
在 JavaScript 中,判断一个是否是数字(number)是一个常见的需求。下面我将详细介绍几种方法,并说明它们的优缺点和适用场景。 --- ## ✅ 方法一:使用 `typeof` ```javascript function isNumber(value) { return typeof value === 'number'; } ``` ### 示例: ```javascript console.log(isNumber(123)); // true console.log(isNumber(NaN)); // false console.log(isNumber('123')); // false console.log(isNumber(undefined)); // false ``` ### 说明: - `typeof` 是最基础的方式。 - 对于 `NaN` 它会返回 `'number'`,所以不能单独依赖它来判断“有效数字”。 --- ## ✅ 方法二:结合 `typeof` 和 `isNaN` ```javascript function isNumber(value) { return typeof value === 'number' && !isNaN(value); } ``` ### 示例: ```javascript console.log(isNumber(123)); // true console.log(isNumber(NaN)); // false console.log(isNumber(Infinity)); // true(注意!) console.log(isNumber('123')); // false ``` ### 说明: - 可以排除 `NaN`。 - 但 `Infinity` 被认为是合法的数字类型,如果要排除可以再加判断。 --- ## ✅ 方法三:使用 `Number.isFinite` ```javascript function isNumber(value) { return Number.isFinite(value); } ``` ### 示例: ```javascript console.log(isNumber(123)); // true console.log(isNumber(NaN)); // false console.log(isNumber(Infinity)); // false console.log(isNumber('123')); // false ``` ### 说明: - 更严格地判断一个是否为**有限的数字**。 - 推荐用于需要确保数是真正有效的数字时使用。 --- ## ✅ 方法四:使用 `Object.prototype.toString.call` ```javascript function isNumber(value) { return Object.prototype.toString.call(value) === '[object Number]'; } ``` ### 示例: ```javascript console.log(isNumber(123)); // true console.log(isNumber(new Number(123))); // true(注意!) console.log(isNumber('123')); // false ``` ### 说明: - 可以识别原始类型 `number` 和 `new Number()` 包装对象。 - 如果你只想识别基本类型的 `number`,不推荐这种方式。 --- ## ✅ 总结对比 | 方法 | 是否接受 NaN | 是否接受 Infinity | 是否接受包装对象 | |------|----------------|-------------------|------------------| | `typeof` | ❌(返回 true) | ✅ | ❌ | | `typeof + isNaN` | ✅ | ✅ | ❌ | | `Number.isFinite` | ✅ | ❌ | ❌ | | `toString.call` | ❌ | ✅ | ✅ | --- ## ✅ 推荐函数(综合判断) 如果你希望只判断**有效的、有限的数字类型**,可以这样写: ```javascript function isValidNumber(value) { return typeof value === 'number' && Number.isFinite(value); } ``` ### 示例: ```javascript console.log(isValidNumber(123)); // true console.log(isValidNumber(NaN)); // false console.log(isValidNumber(Infinity)); // false console.log(isValidNumber('123')); // false console.log(isValidNumber(undefined)); // false ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值