如何测试字符串是否不是数字

时间:2016-07-08 10:25:12

标签: javascript string text extendscript

我试图验证字符串是文本还是数字。 找不到合适的验证方法。 你能建议吗?

这是我的问题:

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发现它?

你能告诉我吗?

6 个答案:

答案 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