1

我有一个用户输入坐标的应用程序。

在 DB 和大多数地图软件中,他们使用十进制表示法来表示 lat/lng(例如123.1234),而不是旧格式:34N 40' 50.12"

我需要测试输入到表单中的值是浮点数,而不是字符串。但是在34N 40' 50.12"返回 34 上使用 parseFloat - 这可以使用大多数测试进行验证。

这就是我正在尝试的,这是在这里找到的一些非常聪明的解决方案的混搭——但到目前为止,我无法让这个东西在所有情况下都能正常工作。我正在测试的基本案例是:

  • 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 回答