【问题标题】:Javascript checking for floatJavascript 检查浮点数
【发布时间】:2012-11-18 03:30:15
【问题描述】:

我有一个用户可以输入坐标的应用。

在 DB 和大多数映射软件中,它们使用十进制表示法来表示 lat/lng(例如 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 --有效
  • '123' -- 有效

这是我一直在尝试的一个 jsfiddle:http://jsfiddle.net/zfwAj/

【问题讨论】:

  • isNaN 应该可以过滤掉那些:jsfiddle.net/QYMRe
  • @JosephMarikle 您应该添加它作为答案,这是测试它的最简单方法。
  • @JosephMarikle 同意。把它放上来,我会投票的:)

标签: javascript type-conversion


【解决方案1】:

看来我应该作为答案发布

isNaN() 应该可以过滤掉那些jsfiddle.net/QYMRe

【讨论】:

  • @Joseph——简单、优雅——正是我想要的!谢谢。
  • @Bruno 不客气。 :) 很高兴我能帮上忙(哈哈,我评论错了地方……太晚了)
【解决方案2】:

试试

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

小提琴here

【讨论】:

  • /\D/.test('123.45') // 是的
  • @Jack 谢谢。想出了一个不同的表达方式:)
【解决方案3】:

我推荐这个:

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

这接受负数,并且像 (.42) 一样浮动

Fiddle测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2013-11-29
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多