• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 349
  • Last Modified:

Checking if field contains numbers

Hi!

How can I tell if $FORM{count} only contains numbers, therefore no letters etc.

Thanks in advance,

Graeme Sandwell
graeme@officedevil.co.uk
0
graemesandwell
Asked:
graemesandwell
1 Solution
 
maneshrCommented:
You want to check whether a string represents a valid number. This is a common problem when validating input, as in a CGI script.


This problem gets to the heart of what we mean by a number. Even things that sound simple, like integer, make you think hard about what you will accept ("Is a leading + for positive numbers optional, mandatory, or forbidden?").


You must decide what you will and will not accept. Then, construct a regular expression to match those things alone. Here are some precooked solutions  for most common cases.


## Sample value.
$FORM{count}="1298";

## Eliminate any leading and trailing spaces from the variable
$FORM{count}=~ s/^\s+//;
$FORM{count}=~ s/\s+$//;

## Now check...
if ($FORM{count}!~ /^\d+$/){ # rejects -3
  print "not a natural number\n";
}

if ($FORM{count}!~ /^-?\d+$/){ ## rejects +3
  print "not an integer\n";
}

if ($FORM{count}!~ /^[+-]?\d+$/){
  print "not an integer\n";
}

if ($FORM{count}!~ /^-?\d+\.?\d*$/){ ## rejects .2
  print "not a decimal number\n";
}

if ($FORM{count}!~ /^-?(?:\d+(?:\.\d*)?|\.\d+)$/){
  print "not a decimal number\n";
}
0
 
ozoCommented:
perldoc -q "How do I determine whether a scalar is a number/whole/integer/float"
0
 
graemesandwellAuthor Commented:
Thanks for all the time you put into your answer!  I was looking for a number > 0.

Thanks again!

Graeme Sandwell
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now