首页 新闻 会员 周边 捐助

c#中怎么用正则表达式写一个限制textbox的语句

0
悬赏园豆:50 [已解决问题] 解决于 2014-10-29 11:14
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两位是数字 我写了一部分,好像不对,请大家帮忙看一下。

韭菜笔记本的主页 韭菜笔记本 | 初学一级 | 园豆:58
提问于:2014-10-28 14:51
< >
分享
最佳答案
0

 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);

 

 
收获园豆:30
xiaoafei1991 | 菜鸟二级 |园豆:466 | 2014-10-28 15:52

你好,首先感谢您能写这么多代码给我看,其次我想说,第一句判断长度好像不恰当。我没输入一次,它就判断一次了。

韭菜笔记本 | 园豆:58 (初学一级) | 2014-10-28 16:16
其他回答(4)
0

^[0-9]{6}+[a-zA-Z]{1}+[0-9]{2}+$

CaiYongji | 园豆:1267 (小虾三级) | 2014-10-28 15:36
0

你可以使用 maskedTextBox 控件

然后设置掩码,也就是Mask属性,值为 000000L00

收获园豆:10
刘宏玺 | 园豆:14020 (专家六级) | 2014-10-28 15:43
0

^(\d{6})([A-Za-z]{1})(\d{2})$

 bool txtIsMatch = Regex.IsMatch("123456yr9", @"^(\d{6})([A-Za-z]{1})(\d{2})$");
        if (txtIsMatch)
        {
            
        }
收获园豆:10
秋壶冰月 | 园豆:5903 (大侠五级) | 2014-10-28 16:03
0

^\d{6}[a-zA-Z]\d{2}$

幻天芒 | 园豆:37207 (高人七级) | 2014-10-28 16:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册