2011-07-23 20 views
5

我有一個變量var number="1234"字符串或數字,儘管數字是一個數值,但它是""之間,所以當我檢查它使用typeofNaN我把它作爲一個字符串。如何檢查VAR是否是使用JavaScript

function test() 
{ 
    var number="1234" 

if(typeof(number)=="string") 
{ 
    alert("string"); 
} 
if(typeof(number)=="number") 
{ 
    alert("number"); 
} 

} 

我總是alert("string"),可以請你告訴我,我怎麼能檢查,如果這是多少?

+0

,因爲你可以通過 「存放」 這將是唯一的字符串。 你需要給變種數= 12345 –

+1

看一看在這個答案中定義的函數 - http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – ipr101

回答

4

該行

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),隨後通過任何多個數字(+),然後字符串的結尾($)。另一種模式只是尋找數字組之間的一個點。

+1

只要數值只有數字,任何其他值(如-1或1.5)將返回false。一個強大的* isNumber()*函數已發佈響應[驗證數字在JavaScript - IsNumeric()](http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric/1830844#1830844 )。 – RobG

0

因爲var number="1234"是一個字符串。雙引號使其成爲文字。

如果你想有一個號碼使用這樣的

var number = 1234; 

更新:

如果從forexample一個輸入標籤以輸入,具體的數據類型將是字符串,如果你想把它轉換成到一個號碼,您可以使用parseInt()函數

var number = "1234"; 

var newNumber = parseInt(number); 

alert(typeof newNumber); // will result in string 
+0

伊布:雅絕對,但我的問題是我可以通過它從文本框中獲取「1234」我如何刪除「」使它成爲一個數字。雖然當我提醒我從文本框中獲得的數據我把它當作1234但是在檢查它給我一個字符串 – Romi

+0

看到我的更新@Romi,使用parseInt()整數或parseFloat()十進制數字將有助於解決這個問題問題 – Ibu

+0

輸入有非數字字符後失敗。 – RobG

2
+0

使用parseInt,它將「abcd」和「1234」轉換爲整數。這給了我錯誤的結果。我只想將「1234」轉換爲數字值 – Romi

+0

http://jsfiddle.net/bhXbh/51/ – Romi

+0

@Romi,實際上'romi'的'numeric'值是NaN(不是數字)。也許你應該檢查結果變量是否爲N.NN(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/isNaN) – spender

6

據我瞭解你的問題,你要求測試 檢測一個字符串是否代表數字值。

簡單的測試應該是

function test() { 
    var number="1234" 
    return (number==Number(number))?"number":"string" 
} 

AS號,如果沒有所謂的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")); 
+0

+1單元測試 –

+0

失敗,其中值爲空字符串或空白,因爲它們都轉換爲0和'0 ==''''。 – RobG

+0

你做得很好! – xgqfrms

0

將其轉換爲數字,然後將其與原始字符串進行比較。

if (parseFloat(the_string,10) == the_string) { 
    // It is a string containing a number (and only a number) 
} 
0

另一個簡單的方法:

var num_value = +value; 
if(value !== '' && !isNaN(num_value)) { 
    // the string contains (is) a number 
} 
+0

空字符串轉換爲零,所以'!isNaN(+(''))'給出false。此外,whitespace和* null *也會轉換爲零,因此它們將返回true(儘管在這種情況下null不是預期值)。 – RobG

+0

@RobG:Mmh.Then我們需要添加另一個測試...謝謝! –

+0

我認爲最簡單的是:'函數isNumber(n){!}!isNaN(parseFloat(n))&& isFinite(n); }'posted [here](http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric/1830844#1830844)。 – RobG