Javascript 如何测试字符串是否为非数字
我试图验证字符串是文本还是数字。 找不到正确的验证方法。 你能给我一些建议吗 我的问题是:Javascript 如何测试字符串是否为非数字,javascript,string,text,extendscript,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
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识别它
如果parseInt()
不能达到您想要的结果,您可以尝试Number
构造函数。它为非数字提供NaN
,您可以使用isNaN()
函数进行验证
var myNumber=“006”;
var myText=“1.这不是一个数字”;
console.log(编号(myNumber));
console.log(编号(myText))代码>如果我正确理解了您的问题,我可能会有一个解决方案,但即使字符串是一个数字,这也会起作用,所以请看:
var yourNumber="55";
if(yourNumber*1==yourNumber){
alert("It's a number");
}else{alert("it's not a number");}
您可以使用isNaN函数检查文本是否为数字:
var myNumber=“006”;
var myText=“1.这不是一个数字”;
log(myNumber+':'+!isNaN(myNumber));
log(myText+':'+!isNaN(myText))代码>您可以使用正则表达式
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
短篇小说:
我真的会使用typeof
操作符
来自isNaN()| JavaScript MDN:
isNaN()
函数确定值是否为非数字。..
您可以选择使用ECMAScript 6中定义的Number.isNaN()
,也可以使用typeof
确定值是否为非数字
说来话长:
在节点控制台中尝试了以下操作
NaN还源于试图强制转换为没有原始数值可用的非数值的数值
与全局isNaN()函数相比,Number.isNaN()不会遇到将参数强制转换为数字的问题。这意味着现在可以安全地传递通常会转换为NaN的值,但实际上与NaN的值不同。这也意味着只有同样为NaN的number类型的值返回true
typeof
运算符返回一个字符串,指示未计算的操作数的类型
在我看来,试着看看这里最简单的方法是将变量乘以1,然后检查结果是否为NaN,即isNaN(myVariable*1)
isNaN(myNumber)
返回true,而不是false。可能重复的请不要编辑文章标题以添加答案。如果这里的答案解决了您的问题,我建议您将答案标记为已解决,否则请留下评论(或者更好,回答您自己的问题),以指导其他人了解您如何解决您的问题(以便将来帮助读者)。更多信息请参见本帖:嗨,pawel,谢谢。我也试过这样做,但我忘了包括$sign。是的,它可以在浏览器中使用。我忘了说我正在使用Adobe ExtendScript。我认为使用Number
构造函数的解决方案是最好的!谢谢@DmitryMasley这个对我不起作用,因为我使用的是ExtendScript。字符串yourNumber=“55.bla bla bla”怎么样?
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
isNaN(123) // false
isNaN(true) // false
isNaN("123") // false
isNaN({}) // true
isNaN(undefined) // 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(123) // number
typeof("123") // string
typeof(true) // boolean