Boolean flag1 = true; Boolean flag2 = true; Boolean flag3 = true; String str = this.txtSerialNo.Text;//输入的字符 String strsub1, strsub2; strsub1 = str.Substring(0,6);//前6位 strsub2 = str.Substring(6,0);//7 //MessageBox.Show("sub1=" + strsub1); //MessageBox.Show("sub2=" + strsub2); RegexStringValidatorAttribute r1 = new RegexStringValidatorAttribute(@"^[0-9]*$"); //@"^(-?[0-9]\d)$" if (!r1.Match(strsub1)) { MessageBox.Show("前6位应输入数字"); flag1 = false; } RegexStringValidatorAttribute r2 = new RegexStringValidatorAttribute(@"^(-?[a-z][A-Z]\d)$"); if (r2.Match(strsub2)) { MessageBox.Show("第7位应输入字母"); flag2 = false; } if (str.Length != 9) { MessageBox.Show("长度不对"); flag3 = false; } if (flag1 == true && flag2 == true && flag3 == true) { MessageBox.Show("ok"); }实现:前6位是数字 第7位是字母 8,9两位是数字 我写了一部分,好像不对,请大家帮忙看一下。
1 String str = this.txtSerialNo.Text;//输入的字符 2 var msg = "ok"; 3 if (str.Length != 9) 4 { 5 msg = "长度不对"; 6 } 7 else 8 { 9 String strsub1, strsub2, strsub3; 10 strsub1 = str.Substring(0, 6); //前6位 11 strsub2 = str.Substring(6, 1); //7 12 strsub3 = str.Substring(7, 2); 13 //MessageBox.Show("sub1=" + strsub1); 14 //MessageBox.Show("sub2=" + strsub2); 15 RegexStringValidatorAttribute r1 = new RegexStringValidatorAttribute(@"^\d{6}$"); 16 17 if (!r1.Match(strsub1)) 18 { 19 msg = "前6位应输入数字"; 20 } 21 else 22 { 23 RegexStringValidatorAttribute r2 = new RegexStringValidatorAttribute(@"^[a-zA-Z]{1}$"); 24 if (!r2.Match(strsub2)) 25 { 26 msg = "第7位应输入字母"; 27 } 28 else 29 { 30 RegexStringValidatorAttribute r3 = new RegexStringValidatorAttribute(@"^\d{2}$"); 31 if (!r3.Match(strsub3)) 32 { 33 msg = "第8、9位应输入数字"; 34 } 35 } 36 } 37 } 38 MessageBox.Show(msg);
你好,首先感谢您能写这么多代码给我看,其次我想说,第一句判断长度好像不恰当。我没输入一次,它就判断一次了。
^[0-9]{6}+[a-zA-Z]{1}+[0-9]{2}+$
你可以使用 maskedTextBox 控件
然后设置掩码,也就是Mask属性,值为 000000L00
^(\d{6})([A-Za-z]{1})(\d{2})$
bool txtIsMatch = Regex.IsMatch("123456yr9", @"^(\d{6})([A-Za-z]{1})(\d{2})$"); if (txtIsMatch) { }
^\d{6}[a-zA-Z]\d{2}$