|
Posted by Richard Lynch on 10/21/89 11:15
On Wed, May 4, 2005 3:51 am, pete M said:
> not a php expert but have filed this bug report re validating
> is_numeric('3e0');
> http://bugs.php.net/bug.php?id=32943
>
> Now tried
>
> function isnumeric($n) {
> if (ereg("^[0-9]{1,50}.?[0-9]{0,50}$", $n)) {
> return true;
> } else {
> return false;
> }
> }
>
> and that doent seem to work either..
>
> any ideas.. need to validate anything without 0-9 and a dot within
.. is a special character in Regex, so your .? is going to match: "any
single character, or nothing"
You need \. for the Regular Expression, only you need \\ in PHP to get \
Plus $ would be interpreted as the start of variable inside of "" in PHP,
so to be really clear, I'd escape that as well:
"^[0-9]{1,50}\\.?[0-9]{0,50}\$"
The 50-character limit seems rather arbitrary and silly, actually...
Perhaps just a + and * instead of the {1,50} and {0,50} as well.
You've also completely missed all the negative numbers, by the way.
Maybe you want to read through the User Contributed notes at
http://php.net/ereg and http://php.net/pcre and find a solution that more
closely matches the real world.
For that matter, Euler notation is quite common, and maybe it's really
best if you just use the built-in function, and accept that the 'e'
notation is valid.
YMMV
--
Like Music?
http://l-i-e.com/artists.htm
[Back to original message]
|