要求 在文本框内如果是字母的话可以输入60个 汉字只能输入30个
也就是只能只能输入60字节的长度

解决方案 »

  1.   

    正则做不到,用Javascipt吧<script>
    function check() {
      var regC = /[^ -~]+/g;
      var regE = /\D+/g;
      var str = t1.value;
      
      if (regC.test(str)){
        t1.value = t1.value.substr(0,30);
      }
      
      if(regE.test(str)){
        t1.value = t1.value.substr(0,60);
      }
    }
    </script>
    <textarea maxlength="10" id="t1" onkeyup="check();">
    </textarea>
      

  2.   

    貌似把文本框的长度设置为60就可以了,Maxlenth属性吧。正则表达式是验证数据合不合一定格式的,区分不了汉字和字母吧。
      

  3.   

    Maxlenth要是为60的话就是60个汉字了
      

  4.   

    1、你真接可以设置为wvarchar类型就可以了,这样的话还可以防止输入字符和汉字的组合。
    2、如果是纯字符或纯汉字:^((\w{0,60})|[\u4e00-\u9fa5]{0,30})$
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  5.   

    Response.Write(Regex.IsMatch(Regex.Replace("这是10个字这是10个字这是10个字这是10个字这是10个字这是10个字", @"[\u4e00-\u9fa5]", "zz", RegexOptions.IgnoreCase), @"^.{60}$"));
      

  6.   

    ^[\s\S]{0,3}$
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  7.   

    ^[\s\S]{0,30}$
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  8.   

    ^[\s\S]{0,30}$:这个匹配30个汉字,30个字符.30个汉字与字符的组合。
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  9.   

    60以内不为空的话Response.Write(Regex.IsMatch(Regex.Replace("这是10个字这是10个字这是10个字这是10个字这是10个字这是10个字", @"[\u4e00-\u9fa5]", "zz", RegexOptions.IgnoreCase), @"^.{1,60}$"));
      

  10.   

    ^.{0,30}$也是一样的
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  11.   

    if (document.gnmssq.textfield1.value=='')
     {
      window.alert ("请输入!");
      gnmssq.textfield1.focus();
      return false
      }
    if (document.gnmssq.textfield1.value.length<=60)
      {
      window.alert("长度不能小于60");
      gnmssq.textfield1.focus();
      return false
      }
      

  12.   

    那么就用js吧,正则好像定不了长度啊。主要是有个混合的可能。或都直接用代码。等待高手的回答。
      
    //////////////////////////////////////////////
    MSN:[email protected]请给我一个与您交流的机会!
      

  13.   

    简单的办法就是将所有字符的字节数加起来看看是否达到60没有
    System.Text.Encoding.Unicode.GetBytes(chrInputString, i, 1);
      

  14.   

    我这个textbox控件名为txt1怎么现在这个的字节数小于等于60啊?
      

  15.   

    public static int GetStringBytes(string InputString)
            {
                int Result = 0;
                char[] chrInputString = InputString.ToCharArray();
                for (int i = 0; i < chrInputString.Length; i++)
                {
                    byte[] bytInputString = System.Text.Encoding.Unicode.GetBytes(chrInputString, i, 1);
                    if (bytInputString.Length == 2)
                    {
                        if (bytInputString[1] != 0)
                        {
                            Result += 2;
                        }
                        else
                        {
                            Result++;
                        }
                    }
                }
                return Result;
            }程序还要我解释不?if (bytInputString[1] != 0)这个情况就是全角情况
      

  16.   

    如此调用:if(GetStringBytes(“乱七八糟的字符串扔进来”) > 60)
    {
       MessageBox.Show("对不起,超过60字节长度了 - -!");
    }