Ruby 正则表达式判断一个字符串为合法的数字

hlcfan · 2012年07月05日 · 最后由 hlcfan 回复于 2012年07月05日 · 8498 次阅读

我是这么写: /\W|[a-z]|[A-Z]/ 比如 "6.6" =~ (/\W|[a-z]|[A-Z]/) 这样写对吗?在 irb 下返回 1,但是在 Rails 里貌似就不对

Float("6.6") rescue nil

你确定你写的正则是判断合法数字的?

#1 楼 @hooopo 不确定。。。 比如输入的是:3.66abc 这样的怎么判断?

"6.6" =~ /^\d+(.\d+)?$/

$re_float = /[-+]?(?:[0-9]+(.[0-9]*)?|(.[0-9]+))([eE][-+]?[0-9]+)?/

p $re_float =~ "1.23" # => 0 p $&.to_f # => 1.23 p $re_float =~ ".23" # => 0 p $&.to_f # => 0.23 p $re_float =~ "1.23e1" # => 0 p $&.to_f # => 12.3 p $re_float =~ "1.23e-1" # => 0 p $&.to_f # => 0.123

"6.6".to_f.to_s == "6.6"

一楼是作法是可行的呀。

#3 楼 @x290431695 thx #6 楼 @ashchan 恩,可行,是我自己搞错了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号