Solved

# numeric or string ??

Posted on 1998-06-12
210 Views
Hi,

I would like to know if they have a way to analyse a value receive from a FORM, if it's a numeric number or a string ?

Thank.
0
Question by:woaini
• 3
• 3
• 2
• +2

LVL 84

Expert Comment

What do you consider a numeric number?
Have you tried the answers in perlfaq4 for "How do I determine whether a scalar is a number/whole/integer/float?"
0

Author Comment

Hi,

I mean by numeric = number . No, I haven't tried the answer in perlfaq4. Can you tell me where the location is ?

Thank.
0

LVL 84

Expert Comment

Is "009" a number? "10e"? "10e-999"? "0xFF"? "1/2"? "Q.10057609"? "-inf"? "two"?  "four score and seven"?

perldoc perlfaq4
in the "Data: Misc" section.

0

Author Comment

0.10 ; 0.50 ; 1 ; 123 are number.
And "yes" or "no" are string.

0

LVL 28

Expert Comment

Form values are passed as a string, if you want to use them as a number and you are not sure that it can be converted to a number, you should convert it to a number and catch an eventual error.

0

LVL 51

Accepted Solution

ahoffmann earned 20 total points
beside ozo's comments, would folloing do what you expect?

\$_=\$string_to_check_if_numeric;
print "\$_\n" if m/^[0-9]+\.?\$|^[0-9]*\.?[0-9]+\$/;
0

LVL 84

Expert Comment

print /[^\d.]/?"string":"number"; # might suffice for your examples
but it may or may not do what you want for "  .5\n", "+12300.e-2", "01", "", "1e9999", etc.
If you're not sure what you want to do in those cases, or if you're not sure which of the FAQ examples is most suitable for your purposes, perhaps you can tell us what you're trying to do with your values?
0

LVL 5

Expert Comment

> beside ozo's comments, would folloing do what you expect?

>     \$_=\$string_to_check_if_numeric;
>     print "\$_\n" if m/^[0-9]+\.?\$|^[0-9]*\.?[0-9]+\$/;

Probably not, at least in the general case.  Remember that a number may have an ignored underbar (i.e. 9_000 is legit... an Ada-ism).  Also, 4.7e12 is a legitimate number, which would fail your test.

ozo's comments about see the faq are relevant.  Tom covers this question exhaustively (btw, the final answer he gives is really 'you probably don't need to...')

0

LVL 51

Expert Comment

b2pi, I know that my answer didn't cover *all* possibilities of writing "numbers", I just want it to be sufficent for woaini.
You even may think about pi, e (==euler), 2/3, and some more which are also legal "numbers" in some contexts.

If you would like to see a more perfect regex, have a look at the "Regualr Expressions" book and you'll see that even in perl it doesn't fit in a single line :-)

BTW, ozo's \d is more perlish than [0-9] (which I like for readability).
0

Author Comment

Thank a lot !
0

## Featured Post

### Suggested Solutions

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…