从键盘输入,判断字符串能否可以转换为一个有效的数字,请各位大佬用代码来砸我,不胜感激。
isNaN
是有缺陷的:
想要判断建议用正则:
/**
* 验证是否是数字。
* @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
。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
isNaN(xxx) 非数字返回true