in reply to Validating specific numeric input

Try this: if (/^-?\d+\.\d*$/)Incidentally, you could combine the two tests into one regexp, but it looks like you want to keep the distinction between those with decimal points and those without. If not, you could do this: if (/^-?\d+(\.\d*)?$/) Note that this second one will capture the fractional part, if any. If that's undesirable, do: if (/^-?\d+(?:\.\d*)?$/) HTH

Replies are listed 'Best First'.
Re: Re: Validating specific numeric input
by jlongino (Parson) on May 02, 2002 at 19:08 UTC
    Thanks so much! The second one does what I want (from what little bit of testing I've done). What I have so far looks like this now, after incorporating they suggestions by tadman and yourself:
    use strict; while (<DATA>) { chomp; my $input = $_; tr/$, +//d; if (/^-?\d+(\.\d*)?$/) { print "Acceptable: '$input' -> ", int $_, "\n"; } else { print "Not acceptable: '$input' -> $_\n"; } } __DATA__ +30 -400 +20,0 -300.02 $ -50.1 -$ 500 - $ 60 + $ 30.
    Output:
    Acceptable: '-400' -> -400 Acceptable: '+20,0' -> 200 Acceptable: '-300.02' -> -300 Acceptable: '$ -50.1' -> -50 Acceptable: '-$ 500' -> -500 Acceptable: '- $ 60' -> -60 Acceptable: ' + $ 30.' -> 30
    If there are anymore optimizations, corrections feel free to kibitz. Thanks all!

    --Jim