JavaScript 判断字符串是否为数字的最佳方法

首先不说废话,直接把结论放出来,解析在下面:

结论:

方法 1:用 isNaNparseFloat 联手出击(最常用)

function isNumeric(value) {
  return !isNaN(parseFloat(value)) && !isNaN(value);
}

方法 2:用 isFiniteparseFloat 的黄金搭档

function isNumeric(value) {
  return !isNaN(parseFloat(value)) && isFinite(value);
}

方法 3:用正则表达式来一网打尽

function isNumeric(value) {
  return /^[+-]?\d+(\.\d+)?$/;
}

注意点

判断字符串是否 是一个数字,要注意问题的坑是isNaN("") === false,且Number("") === 0

解析

方法 1:用 isNaNparseFloat 联手出击

function isNumeric(value) {
  return !isNaN(parseFloat(value)) && !isNaN(value);
}
console.log(isNumeric("+123.12")); // true
console.log(isNumeric("123abc")); // false
console.log(isNumeric("")); // false
console.log(isNumeric(Infinity)); // true
  • parseFloat(value) 可以来排除空字符串的情况,因为parseFloat("")===NaN
  • isNaN(value) 判断是否是一个纯数字的字符串

方法 2:用 isFiniteparseFloat 的黄金搭档

接下来是 isFiniteparseFloat 这对黄金搭档。这个方法同样非常有效哦!

function isNumeric(value) {
  return !isNaN(parseFloat(value)) && isFinite(value);
}

console.log(isNumeric("-123.45")); // true
console.log(isNumeric("123abc")); // false
console.log(isNumeric("")); // false
console.log(isNumeric(Infinity)); // false
  • parseFloat(value) 依然负责排除空字符串的情况
  • isFinite 函数用来判断参数是否为一个有限数值。目的和 isNaN一样,判断是否是一个纯数字的字符串。
    • (isFinite方法1和2结果isFinite的结果是不一样哦,可自行选择)
  • 这个组合可以确保 value 是一个真正的数字,不是 Infinity 或者 NaN

方法 3:用正则表达式来一网打尽

最后一个方法,咱们来用正则表达式。虽然稍微复杂点,但它的准确性非常高哦!

function isNumeric(value) {
  return /^[+-]?\d+(\.\d+)?$/.test(value);
}

console.log(isNumeric("+123")); // true
console.log(isNumeric("-123.45")); // true
console.log(isNumeric("123abc")); // false
console.log(isNumeric("")); // false
  • 这个正则表达式 ^[+-]?\d+(\.\d+)?$ 看起来有点复杂,但它非常强大!
    • ^[+-]? 匹配可选的正负号。
    • \d+ 匹配一个或多个数字。
    • (\.\d+)? 匹配可选的小数部分。
  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值