试试
<?php
$qq='有效32';
if(!ereg('.*?\w{2,12}$',$qq))
echo "不匹配 <br>";
else
echo "匹配 <br>";
?> 匹配最后两个至12是数字的

解决方案 »

  1.   

    Warning: ereg() [function.ereg]: REG_BADRPT in C:\ComsenzEXP\wwwroot\test.php on line 3
    不匹配 
      

  2.   

    我就是想匹配2到12个字符的 数字 字母 下划线 汉字
    ^\w{2,12}$这个正在表达式我在Code Architects Regx Tester里测试没有问题啊
      

  3.   

    $qq='有效32';
    if(preg_match('/\w{2,12}/',$qq))
    echo "匹配 <br>";
    else
    echo "不匹配 <br>";
      

  4.   

    $s = "有效32";
    preg_match_all("/^.{2,12}$/",$s,$a);
    print_r($a);要用.不要用\w,因为你那里面有中文,\w的范围中不包括中文
      

  5.   

    楼上的磊磊同学说的有道理。在php里\w等价于'[A-Za-z0-9_]'。
     
      

  6.   

    ereg('^\w{2,12}$',$qq)
    不支持\w
      

  7.   

    \w也包含中文啊 大哥..
    4楼不也是用的\w么??
    http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
    表1.常用的元字符 代码 说明 
    . 匹配除换行符以外的任意字符 
    \w 匹配字母或数字或下划线或汉字 
    \s 匹配任意的空白符 
    \d 匹配数字 
    \b 匹配单词的开始或结束 
    ^ 匹配字符串的开始 
    $ 匹配字符串的结束 
      

  8.   

    php里面不包含中文。perl里面包含中文。具体语言略有细微区别。
      

  9.   

    为什么preg__match里的正则表达式前后要加上/  /呢?
      

  10.   

    preg_match 是兼容perl 的 所以..