JavaScript字符串转换数字

新手上路,请多包涵

从键盘输入,判断字符串能否可以转换为一个有效的数字,请各位大佬用代码来砸我,不胜感激。

阅读 2.3k
3 个回答

isNaN(xxx) 非数字返回true

isNaN 是有缺陷的:

image.png


想要判断建议用正则:

/**
* 验证是否是数字。
* @param {String} val
* @return {Boolean}
*/
function isNumeric(val) {
    if (String(val).trim() === '') {
        return false; // 对空字符串特殊处理
    }
    return /^[+-\]?\d*[.]?\d*$/.test(val);
}
REF: https://github.com/fudiwei/js...

但正则对无穷大却不支持,如果不需要支持无穷大,正则就够了;要想更精准,可以这么做:

/**
* 验证是否是数字。
* @param {String} value
* @return {Boolean}
*/
function isNumeric(val) {
    if (typeof val === 'number') {
        return val - val === 0;
    }

    if (typeof val === 'string' && val.trim() !== '') {
        return Number.isFinite(+val);
    }
    
    return false;
};
REF: https://github.com/fudiwei/js...

可以尝试下JavaScript的isNaN()函数,它的作用就是来判断一个字符串是否可以转换为数字。这个函数会尝试将输入转换为数字,如果转换失败,那么它将返回true,否则返回false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题