首页 > 解决方案 > 如何可靠地检查 Javascript 字符串是否为数字

问题描述

如何判断一个字符串是否代表一个数字?

直接且可能幼稚的方法是:

function is_number(my_str) {
  return !isNaN(parseInt(my_str));
}

但是,以上不起作用。请注意,以下所有内容都返回 true:

is_number("3, 4, 5");
is_number("3, (123)");
is_number("3, 123)");
is_number("3, (123) (and foo bar)");
is_number("3 apples and 2 oranges");

问题是,parseInt似乎只看第一个词。对这里更全面的解决方案有任何想法吗?

标签: javascripttypesnumbers

解决方案


您可以使用Number()parseInt如果第一个字符是数字,则parseFloat转换String为数字。但如果整个字符串不是数字,则Number()检查整个String.Number 返回NaN

function is_number(my_str) {
  return !isNaN(Number(my_str)) && Boolean(my_str) || my_str == 0;
}

console.log(is_number("3, 4, 5"));
console.log(is_number("3, (123)"));
console.log(is_number("3, 123)"));
console.log(is_number("3, (123) (and foo bar)"));
console.log(is_number("3 apples and 2 oranges"));
console.log(is_number(null));
console.log(is_number(undefined));
console.log(is_number(0));
console.log(is_number('0'));


推荐阅读