一个用户名注册的问题, 只允许用户名的格式为数字,字母和汉字, 汉字的长度是2-6个汉字。               String patternName=@"/^[\u4e00-\u9fa5\w\d@\.\-_]{2,6}$/i";
                System.Text.RegularExpressions.Regex regname = new System.Text.RegularExpressions.Regex(patternName);
                if (!regname.IsMatch(strName))
                {
                    msg = "用户名格式不正确";
                }
请教高手, 格式在后台检索

解决方案 »

  1.   

    Regex reg = new Regex(@"^(?:[a-zA-Z]{1,10}|[\u4e00-\u9fa5]{6})$");
      

  2.   

    /(^([\u4e00-\u9fa5\]{2,6})$)|(^([0-9a-zA-Z]{1,10})$)/试试
      

  3.   

     Regex reg = new Regex(@"^[\u4e00-\u9fa5a-zA-Z]{1,10}$");
      

  4.   

    Regex reg = new Regex(@"^[\u4e00-\u9fa5a-zA-Z]{1,10}$");这个长度是按照 混合后字符串的字节数计算还是字符串长度。
      

  5.   


     string patternName = "^(?:[a-zA-Z]{1,10}|[\u4e00-\u9fa5]{2,6}|[\u4e00-\u9fa5a-zA-Z]{1,16})$";
      System.Text.RegularExpressions.Regex regname = new  System.Text.RegularExpressions.Regex(patternName);
                    if (!regname.IsMatch(strName))
                    {
                        msg = "用户名格式不正确";
                    }
    当我输入"爱他9999"时也提示格式不正确。 
      

  6.   

    看你上面的回复没说要支持数字,那里面就没写数字了
    [\u4e00-\u9fa5a-zA-Z\d]
    你这样用前面两个[a-zA-Z]{1,10}|[\u4e00-\u9fa5]{2,6}没用处
    你规则是怎么样的?
      

  7.   

    test
    Regex reg = new Regex(@"^(?:[a-zA-Z]{1,10}|[\u4e00-\u9fa5]{2,6}|(?![^a-zA-Z]+$)(?![^\u4e00-\u9fa5]+$)[\u4e00-\u9fa5a-zA-Z]{1,16})$");
      

  8.   

    testRegex reg = new Regex(@"^(?:[a-zA-Z]{1,10}|[\u4e00-\u9fa5]{2,6}|(?![^a-zA-Z]+$)(?![^\u4e00-\u9fa5]+$)[\u4e00-\u9fa5a-zA-Z\d]{1,16})$");要么是全英文,要么全中文
    要么英文和中文或数字