Robin : 
        $i='2';
        if (preg_match('/^(20|1[0-9]|1-9])$/', $i)) {
                echo 'yes';
        }else
                echo 'no';


stdout: no

Marek :
        $i='02';
        if (($i>=1) && ($i<=20) && (eregi('^[0-9]+$', $i)))
                echo 'yes';


stdout: yes

i hate reposting but my problem seems to persist :( sorry.


On Thu, 27 Jan 2005 16:28:37 +0000, Robin Vickery <[EMAIL PROTECTED]> wrote:
> On Thu, 27 Jan 2005 16:56:05 +0100, Zouari Fourat <[EMAIL PROTECTED]> wrote:
> > > this is working fine :
> > > if (eregi("^-?([1-3])+$",$x)
> > >  echo "x is 1 or 2 or 3";
> >
> > i forgot to say that doesnt work with 1-20 :(
> > how to do it ?
> 
> You're far better off doing it arithmetically as someone already said,
> however  if you absolutely *have* to use a regexp then this is how you
> go about it:
> 
> You need to match these possible variations:
> 1. the number '20'
> 2. the number '1' followed by any digit between 0 and 9.
> 3. any digit between 1 and 9.
> 
> the pattern for the first one is easy. it's just a fixed string: 20
> the pattern for the second is only slightly harder: 1[0-9]
> the pattern for the third is: [1-9]
> 
> You want to match any of them, so you join them together with an
> alternation operator, the '|' symbol to get: 20|1[0-9]|[1-9]
> 
> This will match any string that contains the numbers 1-20, such as
> '200'. To make sure it only matches exactly the numbers you're
> interested in, you have to "anchor" the start and finish ending up
> with this:
> 
> if (preg_match('/^(20|1[0-9]|1-9])$/', $candidate)) {
>    // $candidate is a decimal integer between 1 and 20 inclusive with
> no leading zeros.
> }
> 
>  -robin
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to