Regexp for finding floats in a string

What RegExp should I be using for floats?

Currently, I have /[-+0-9eE.]+/, viz,

require 'test/unit'
class TestFloatRegExp < Test::Unit::TestCase
   def test_finds_em
     %w{ 1 -2 3.0 0.4 5.0e+5 -6e+06 .7E+7 }.each do |string|
       assert( string.match(/[-+0-9eE.]+/), "no match >>#{string}<<" )
     end
   end
end

···

--
Bil
http://fun3d.larc.nasa.gov

Have a look at the regexp in

   perldoc -q float

-- fxn

PS: Your mail client runs on a Mac, that works there.

···

On Aug 15, 2006, at 12:50 AM, Bil Kleb wrote:

What RegExp should I be using for floats?

Currently, I have /[-+0-9eE.]+/, viz,

require 'test/unit'
class TestFloatRegExp < Test::Unit::TestCase
  def test_finds_em
    %w{ 1 -2 3.0 0.4 5.0e+5 -6e+06 .7E+7 }.each do |string|
      assert( string.match(/[-+0-9eE.]+/), "no match >>#{string}<<" )
    end
  end
end

Xavier Noria wrote:

Have a look at the regexp in

  perldoc -q float

/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/

Ouch!

Thanks; I think. :slight_smile:

Regards,

···

--
Bil
http://fun3d.larc.nasa.gov

Quick caveat - that's for a c float (as mentioned in that perldoc
snippet). Ruby float (& other numeric) literals allow the underscore
character (with restrictions) as well. So really, it depends on
exactly what you're parsing and why.

-A

···

On 8/16/06, Bil Kleb <Bil.Kleb@nasa.gov> wrote:

Xavier Noria wrote:
> Have a look at the regexp in
>
> perldoc -q float

/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/

Ouch!

Thanks; I think. :slight_smile: