2016-06-07 58 views
0

如何簡單地檢查字符串是否可以轉換爲整數?Javascript - 檢查字符串是否可以轉換爲整數?

而我的意思是隻有整數,所以字符串像'10.1'不會被轉換爲10

例如,如果我這樣做:

parseInt('10.1', 10) 

它返回10

有相當的類似的東西是在Python,所以我不會需要做大量的檢查?

在Python中,如果我做int('10.1'),它給了我錯誤,但如果字符串實際上是整數,那麼它只會讓你轉換它像int('10')。所以很容易檢查,甚至沒有使用正則表達式或一些額外的檢查。

我嘗試這樣做:

function isInteger (value) { 
     if ($.isNumeric(value) && Number(value) % 1 === 0){ 
      return true; 
     } else { 
      return false; 
     } 
    } 

它有點兒工作,但如果我寫例如10.,它將返回true,因爲Number轉換爲10。我想我需要使用正則表達式來檢查這樣的事情?

P.S.我搜索這個問題,但所有的答案似乎是模糊的,實際上並沒有回答如何正確檢查整數(不只是如果它是數字)。

+0

http://www.w3schools.com/jsref/jsref_parseint.asp – HudsonPH

+0

[parseInt函數](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt)可能和[isNaN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN)檢查? 'parseInt'如果無法解析則返回'NaN'。 – ste2425

+0

想知道爲什麼downvote?:) – Andrius

回答

3

一種可能性是使用正則表達式來進行測試,像這樣:

function isInteger(value) { 
    return /^\d+$/.test(value); 
} 
0

如果我正確理解你的問題那麼這應該這樣做:

function isInteger(value) { 
    if(parseInt(value,10).toString()===value) { 
    return true 
    } 
    return false; 
} 

它一個字符串轉換爲整數,然後返回一個字符串,並比較了原來的字符串。如果它們匹配,則返回true,否則返回false。

+0

雖然 – PeeHaa

+0

你錯過了基數嗯,有趣的想法,但你應該返回true,如果它是匹配的,不需要返回實際值。 – Andrius

+0

@PeeHaa他爲什麼缺少基數? – Andrius

-1

您可以使用正則表達式來檢測它是否匹配任何值。

function isInterger(value) { 
    if (value.match(/^\d+$)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

https://regex101.com/r/lE5tK1/1

+0

但我特別說,我需要檢查整數,而不是任何數字。 – Andrius

+0

這匹配任何包含數字的字符串,例如「100foo」或「csdvsd7」會匹配 – Anduril

+0

是的,我改變了! ;) –

相關問題