If you're going to use a regex, you can use
Regexp::Common::number instead of rolling your own, and then just do the numeric range check. Note that this regex will support many formats, including exponential and optionally grouping (see pod).
use Regexp::Common qw /number/;
my $ok = $num =~ /^$RE{num}{real}$/
&& 0 <= $num
&& $num < 1 ;