javascript - 如何可靠地检查 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
似乎只看第一个词。对这里更全面的解决方案有任何想法吗?
解决方案
您可以使用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'));
推荐阅读
- airflow - 更改 Airflow 的 DAG end_date
- python - API 调用响应时间过长。如何通过此功能传递控制权并稍后再回来
- konvajs - 无法更新 Konva rect
- php - 在 PHP 中使用 PhpMailer 和 IMAP_SEARCH 进行回复跟踪
- c# - 自定义 jQuery DataTable 以获取自定义 CheckBox 事件行明智
- java - 更新后,Wicket 无法在表单提交上加载资源
- javascript - 将数组值附加到字符串
- regex - VS Code 正则表达式只搜索大写字母
- javascript - 删除多个 localStorage 项目
- javascript - 如何在模板文字中使用模板文字(``)?