先交代一下问题背景,
我有一个windowform,这个窗体上仅有两个和问题相关的空间,textbox1和button1,我要在textbox1中输入QQ号,要求5到8位的数字,button1的click对其输入进行检测。代码如下,
private bool eerr()
        {
            Regex zz = new Regex("\\d{5,8}");
            if (zz.IsMatch(textBox1.Text))
            {
                MessageBox.Show("DATA ENTRY OK!");
                return false;
            }            Regex zz1 = new Regex("\\d{1,4}");
            if (zz1.IsMatch(textBox1.Text))
            {
                MessageBox.Show("Digital too short!");
                return false;
            }            Regex zz2 = new Regex("\\d{9,}");
            if (zz2.IsMatch(textBox1.Text))
            {
                MessageBox.Show("Digital too long!");
                return false;
            }            Regex zz3 = new Regex("[~!@#$%^&*()=+[\\]{}''\";:/?.,><`|!·¥…—()\\-、;:。,》《]");
            if (zz3.IsMatch(textBox1.Text))
            {
                MessageBox.Show("Please don't input illegal character!");
                return false;
            }            return true;
        }        private void button1_Click(object sender, EventArgs e)
        {
            if(!eerr())
            {
                return;
            }
        }问题,
当我输入1到4位数字或者非法字符时,message提示都正常,但是当我输入9位以上的纯数字时,只提示"DATA ENTRY OK!",并没有出现我期望看到的"Digital too long!",求解=。=

解决方案 »

  1.   

    恩 你要匹配整个QQ 所以要^$
    不然 9位的QQ 因为也符合含有5-8位数字的条件,所以也匹配成功了
      

  2.   

    利用 ^ 及 $
        行受  行尾Regex zz = new Regex("^\\d{5,8}$");
       if (zz.IsMatch(textBox1.Text))
       {
       MessageBox.Show("DATA ENTRY OK!");
       return false;
       }
      

  3.   

     
    Regex zz = new Regex("\\d{5,8}");
      if (zz.IsMatch(textBox1.Text))
      {
      MessageBox.Show("DATA ENTRY OK!");
      return false;
      }孩子你都return了你还指望它能显示什么??