2012-11-29 73 views
1

我有一個用戶輸入座標的應用程序。Javascript檢查浮動

在DB和最繪圖軟件他們使用緯度/經度的十進制表示法(如:123.1234),而不是舊格式:34N 40' 50.12"

我需要測試的值輸入到一個形式是浮動,而不是一個字符串。但使用34N 40' 50.12"上的parseFloat會返回34--它將使用大多數測試進行驗證。

下面是我正在嘗試的,這是一個在這裏發現的幾個非常聰明的解決方案的混搭 - 但到目前爲止,我無法讓所有情況下的東西正常工作。基本情況我測試的是:

  • 123.1234 - 有效
  • '123.1234' - 有效
  • 34N 40' 50.12" - 無效
  • '34N 40' 50.12"' - 無效
  • 123 --valid
  • '123' - 有效

這裏是什麼,我一直在嘗試一個的jsfiddle:http://jsfiddle.net/zfwAj/

+3

'isNaN'應努力過濾掉那些者:http://jsfiddle.net/QYMRe/ –

+0

@JosephMarikle你應該補充說,作爲一個答案,這是測試這個最簡單的方法。 – bfavaretto

+0

@JosephMarikle同意。把它,我會upvote :) – Bruno

回答

3

看來我應該已經張貼作爲一個答案

​​應努力過濾掉那些jsfiddle.net/QYMRe

+0

@約瑟夫 - 簡單而優雅 - 正是我期待的!謝謝。 – julio

+0

@布魯諾不客氣。 :)很高興我可以幫助(大聲笑我評論了錯誤的地方...這是遲到) –

+0

+1。刪除了我自己的答案:) –

0

嘗試

/^\d+\.?\d*$/.test(str); 

小提琴here

+0

'/\D/.test('123.45')'// true –

+0

@Jack謝謝。想出了一個不同的表達:) – Bruno

+0

而'123 ....''看起來對你有效? ;-) –

0

我表明這一個:

/^-?(\d*\.\d+|\d+(\.\d+)?)$/.test(str) 

這將接受負數,而像漂浮(0.42)

Fiddle測試