本帖最后由 xuzuning 于 2014-04-21 10:43:32 编辑

解决方案 »

  1.   

    for($i=1; $i<100; $i++) {
      printf("%2d %s\n", $i, preg_match('/^\d?[13579]$/', $i) ? 'yes' : 'no');
    }
     1 yes
     2 no
     3 yes
     4 no
     5 yes
     6 no
     7 yes
     8 no
     9 yes
    10 no
    11 yes
    12 no
    13 yes
    14 no
    15 yes
    16 no
    17 yes
    18 no
    19 yes
    20 no
    21 yes
    22 no
    23 yes
    24 no
    25 yes
    26 no
    27 yes
    28 no
    29 yes
    30 no
    31 yes
    32 no
    33 yes
    34 no
    35 yes
    36 no
    37 yes
    38 no
    39 yes
    40 no
    41 yes
    42 no
    43 yes
    44 no
    45 yes
    46 no
    47 yes
    48 no
    49 yes
    50 no
    51 yes
    52 no
    53 yes
    54 no
    55 yes
    56 no
    57 yes
    58 no
    59 yes
    60 no
    61 yes
    62 no
    63 yes
    64 no
    65 yes
    66 no
    67 yes
    68 no
    69 yes
    70 no
    71 yes
    72 no
    73 yes
    74 no
    75 yes
    76 no
    77 yes
    78 no
    79 yes
    80 no
    81 yes
    82 no
    83 yes
    84 no
    85 yes
    86 no
    87 yes
    88 no
    89 yes
    90 no
    91 yes
    92 no
    93 yes
    94 no
    95 yes
    96 no
    97 yes
    98 no
    99 yes
      

  2.   

    老大辛苦了,我的意思是还要同时判断输入的数字大于0,小于100(1-99之间),虽然我知道可以用if<1,if>99来判断,但我想用一个正则来直接判断。
      

  3.   

    /^\d?[13579]$/
    就已经满足了
    var_dump(preg_match('/^\d?[13579]$/', 0));//int(0)
    var_dump(preg_match('/^\d?[13579]$/', -1));//int(0)
    var_dump(preg_match('/^\d?[13579]$/', 100));//int(0)