我试图验证字符串是文本还是数字。 找不到合适的验证方法。 你能建议吗?
这是我的问题:
var myNumber = "006";
var myText = "1. This is not a number";
isNaN(myNumber); // false
isNaN(myText); // false
I tried also:
isNaN(myNumber.split('.')[1]); // true
isNaN(myText.split('.')[1]); // true
parseInt(myNumber); // 6
parseInt(myText); // 1
我想要实现的是找到一个字符串可以转换为数字的时候(参见myNumber)。如果字符串实际上是文本,如何使用javascript发现它?
你能告诉我吗?
答案 0 :(得分:4)
如果我正确地理解了你的问题,我可能会有一个解决方案,但即使字符串是一个数字,这也会有效,所以在这里:
var yourNumber="55";
if(yourNumber*1==yourNumber){
alert("It's a number");
}else{alert("it's not a number");}
答案 1 :(得分:1)
如果parseInt()
无法满足您的预期效果,您可以尝试使用Number
构造函数。它会为您提供NaN
非数字,您可以使用isNaN()
函数进行验证。
var myNumber = "006";
var myText = "1. This is not a number";
console.log( Number(myNumber) );
console.log( Number(myText) );
或者您可以使用正则表达式:
var myNumber = "006";
var myText = "1. This is not a number";
var numRegex = /^\d+$/;
console.log( numRegex.test(myNumber) );
console.log( numRegex.test(myText) );
答案 2 :(得分:0)
{{1}}
答案 3 :(得分:0)
您可以使用isNaN函数检查文本是否为数字:
var myNumber = "006";
var myText = "1. This is not a number";
console.log(myNumber + ': ' + !isNaN(myNumber));
console.log(myText + ': ' + !isNaN(myText));

答案 4 :(得分:0)
您可以使用正则表达式。
function isNumber(num){
return /^(\d+)?(\.)?\d+$/.test(num);
}
isNumber("006") // true
isNumber(".6") // true
isNumber("1 not a number") // false
isNumber("23.63") // true
isNumber("23.6.3") // false
答案 5 :(得分:0)
短篇小说:
我真的会使用typeof
运算符。
来自isNaN()| JavaScript MDN:
isNaN()
函数确定值是否为非数字。...
您可以选择使用Number.isNaN()
,如ECMAScript 6,或者您可以使用typeof
来确定该值是否为非数字。
长篇故事:
在节点控制台中尝试以下操作。
NaN也是企图强制转换为非数值的数值,而且没有原始数值可用。
isNaN(123) // false
isNaN(true) // false
isNaN("123") // false
isNaN({}) // true
isNaN(undefined) // true
与全局isNaN()函数相比,Number.isNaN()不会遇到强制将参数转换为数字的问题。这意味着现在可以安全地传递通常会转换为NaN的值,但实际上与NaN的值不同。这也意味着只有类型编号的值(也是NaN)才会返回true。
Number.isNaN(undefined) // false
Number.isNaN({}) // false
Number.isNaN(true) // false
Number.isNaN(123) // false
Number.isNaN(NaN) // true
Number.isNaN(0/0) // true
typeof
运算符返回一个字符串,指示未评估的操作数的类型。
typeof(123) // number
typeof("123") // string
typeof(true) // boolean