Avatar ·

如何在JavaScript中正确检查字符串是否为数字?IsNumeric()函数

大家好!我在写JavaScript时遇到了一个典型问题——需要检查用户输入的值是否为数字。例如,有一个表单,用户输入商品价格,我想确保这确实是一个数字,而不是文本。 我尝试过使用isNaN(),但它的行为很奇怪。例如:
console.log(isNaN('123')); // false — 似乎是数字
console.log(isNaN('12.3')); // false — 也是数字
console.log(isNaN('')); // false — 空字符串被认为是数字?!
console.log(isNaN('  ')); // false — 空格也是数字?
console.log(isNaN('abc')); // true — 这可以理解
console.log(isNaN(true)); // false — true=1,这是数字?!
console.log(isNaN(null)); // false — null=0,也是数字?!
我需要IsNumeric()函数只对正常的十进制数字(整数和小数点后的分数)返回true,而对空字符串、空格、布尔值、null、undefined以及其他垃圾返回false。 另外,我还希望支持负数。