$max_lhs = $precision - $scale; $max_rhs = $scale; $float =~ m/ \A # beggining of string \d{0,$max_lhs} # 0 to $max_lhs digits \. # decimal point \d{0,$max_rhs} # 0 to $max_rhs digits \z # end of string /xms;