1

ユーザーが座標を入力するアプリがあります。

DBおよびほとんどのマッピングソフトウェア123.1234では、古い形式ではなく、lat / lng(例)に10進表記を使用します。34N 40' 50.12"

フォームに入力された値が文字列ではなくfloatであることをテストする必要があります。ただし、parseFloatを使用34N 40' 50.12"すると34が返されます。これは、ほとんどのテストを使用して検証されます。

これが私が試していることです。これは、ここで見つかったいくつかの非常に巧妙なソリューションのマッシュアップですが、これまでのところ、すべてのケースで適切に機能させることはできません。私がテストしている基本的なケースは次のとおりです。

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

これが私が試したことのjsfiddleです:http://jsfiddle.net/zfwAj/

4

3 に答える 3

3

答えとして投稿すべきだったようです

isNaN()それらを除外するために機能する必要がありますjsfiddle.net/QYMRe

于 2012-11-29T23:37:30.240 に答える
0

試す

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

ここでフィドル

于 2012-11-29T22:58:18.267 に答える
0

私はこれを提案します:

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

これは負の数を受け入れ、(。42)のように浮動します

フィドルテスト

于 2017-05-31T06:52:44.703 に答える