我有一个变量var number="1234"
,虽然这个数字是一个数值但是在""
之间,所以当我使用typeof
或NaN
检查时,我得到了它作为一个字符串。
function test()
{
var number="1234"
if(typeof(number)=="string")
{
alert("string");
}
if(typeof(number)=="number")
{
alert("number");
}
}
我总是alert("string")
,请您告诉我如何检查这是否是一个数字?
答案 0 :(得分:7)
据我所知,您的问题是要求进行测试 检测字符串是否表示数值。
快速测试应
function test() {
var number="1234"
return (number==Number(number))?"number":"string"
}
作为Number,如果在没有new
关键字的情况下调用,则将字符串转换为数字。
如果变量内容未被触及(==
将数值转换回字符串)
你正在处理一个数字。否则就是一个字符串。
function isNumeric(value) {
return (value==Number(value))?"number":"string"
}
/* tests evaluating true */
console.log(isNumeric("1234")); //integer
console.log(isNumeric("1.234")); // float
console.log(isNumeric("12.34e+1")); // scientific notation
console.log(isNumeric(12)); // Integer
console.log(isNumeric(12.7)); // Float
console.log(isNumeric("0x12")); // hex number
/* tests evaluating false */
console.log(isNumeric("1234e"));
console.log(isNumeric("1,234"));
console.log(isNumeric("12.34b+1"));
console.log(isNumeric("x"));
答案 1 :(得分:5)
该行
var number = "1234";
创建一个值为“1234”的新String对象。通过将值放在引号中,您说它是一个字符串。
如果要检查字符串是否只包含数字,可以使用regular expressions。
if (number.match(/^-?\d+$/)) {
alert("It's a whole number!");
} else if (number.match(/^-?\d+*\.\d+$/)) {
alert("It's a decimal number!");
}
模式/^\d+$/
表示:在字符串的开头(^
),有一个可选的减号(-?
),然后是一个数字(\d
) ,后跟任何更多的数字(+
),然后是字符串的结尾($
)。另一种模式只是在数字组之间寻找一个点。
答案 2 :(得分:2)
答案 3 :(得分:0)
因为var number="1234"
是一个字符串。双引号使它成为文字。
如果你想要一个数字就像这样使用它
var number = 1234;
更新
如果你从输入标签获取输入,例如,dataType将是字符串,如果你想将它转换为数字,你可以使用parseInt()函数
var number = "1234";
var newNumber = parseInt(number);
alert(typeof newNumber); // will result in string
答案 4 :(得分:0)
将其转换为数字,然后将其与原始字符串进行比较。
if ( parseFloat(the_string,10) == the_string ) {
// It is a string containing a number (and only a number)
}
答案 5 :(得分:0)
另一种简单方法:
var num_value = +value;
if(value !== '' && !isNaN(num_value)) {
// the string contains (is) a number
}