eregi("[^0-9a-z\_].{6,12}$",$user_num)) 
多了一个 ^ 和 .正确的如下
eregi("[0-9a-z\_].6,12}$",$user_num)) 或者更简单的
eregi("^\w{6,12}$",$user_num)) 

解决方案 »

  1.   

    这样不对哦我只要数字 字母 下划线 组成的 并且 长度为6~12 可现在输入 特殊符号也照样没提示错误 而且长度也有问题 if(empty($user_num) ||eregi("^[0-9a-zA-Z\_].{6,12}$",$user_num)){
    ReturnText("<font color='#FF0000'>格式错误,通行证只能由数字、字母、下划线组成!<br>长度为6~12个字符</font>");
    }
      

  2.   

    我用javascript、JAVA和C#试过,都满足要求
    不知道PHP有没有不同的地方(不会PHP)下面是javascript的代码
    <script type="text/javascript">
    var req = /^\w{6,12}$/;
    alert(req.test("__fds532"));
    alert(req.test("_ _fds532"));
    </script>
      

  3.   

    谢谢你 伙计,
    我现在需要在PHP代码中运行这段正则哦
      

  4.   

    \w不包括下划线_
    ^[\w_]{6,12}$
    或者
    ^[0-9a-zA-Z_]{6,12}%特殊符号也可是是因为你的正则里多了个点了^[0-9a-zA-Z\_].{6,12}$
    点在正则里是代表任意字符的意思,实际上你上面的这个正则的意思是开头是数字或字母,后面紧接6-12个任意字符
      

  5.   

    if( eregi("[^0-9a-zA-Z_]{6,12}% ",$user_num) ){
    echo "cuowu!";
    }else{
    echo "zhengque";
    }是不是这个写的有问题???
      

  6.   

    [^0-9a-zA-Z_]{6,12}
    ^写在[]里代表的是非的意思,也就是非数字字母6到12位
    请将^写在[]外,
    ^[0-9a-zA-Z_]{6,12}
      

  7.   

    $s = '123f2_gfg4@_1ASD3tsSs~F1';
    preg_match_all('/^[0-9a-z\_]{6,12}/im',$s,$m);
    print_r($m);这样就可以了