string stbMail = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
        Regex RetbMail = new Regex(stbMail);
        if (!RetbMail.IsMatch(tbMail.Text))
        {
            Anthem.Manager.AddScriptForClientSideEval("alert('邮件格式不正确,请重新输入')");
            return;
        }
        string stbPostNum = @"\d{6}";
        Regex RetbPostNum = new Regex(stbPostNum);
        if (!RetbPostNum.IsMatch(tbPostNum.Text))
        {
            Anthem.Manager.AddScriptForClientSideEval("alert('邮编格式不正确,请重新输入')");
            return;
        }为什么邮件能够验证出来真假  而邮编这么写就进不去if语句??

解决方案 »

  1.   

    string stbPostNum = @"\d{6}*$";
      

  2.   

    把断点设置在这看看tbPostNum.Text传进来的值是否是你想要的,如果是
    在看看你的RetbPostNum.IsMatch是否有问题,也设置一个断点跟踪一下,这种问题一般都出在逻辑错误上,
      

  3.   

    逻辑上肯定没错误  因为和上面的邮箱判断是类似的判断  邮箱判断好用  错误时可以进去if语句 但是
    RetbPostNum.IsMatch(tbPostNum.Text)的返回值一直是true  很怪  已经断点了很多次 黔驴技穷了
      

  4.   

    string stbPostNum = @"\d{6}";
    if (!Regex.IsMatch(stbPostNum,"1a234566"))
    {
       、、、
    }
    直接用静态方法,不用实例方法。
      

  5.   

            string stbPostNum = @"\d{6}";
            Regex RetbPostNum = new Regex(stbPostNum);
    这个正则的意思是 只要你匹配的字符串中包含连续的6个数字就返回匹配成功

    “123456ff” 匹配
    “去123456rr” 匹配
    “sd123456” 匹配而匹配邮编应该是字符串是由六位的数字组成的,且第一位不可能为零
            
        string stbPostNum = @"^[1-9][0-9]{5}$";
        Regex RetbPostNum = new Regex(stbPostNum);