需要引入命名空间:using System.Text.RegularExpressions
首先,先定义一个string,用来表示数字的正则表达式:
public string pattern = @"^[0-9]*$";//表示数字
接着,我们就可以在textBox的TextChanged事件中判断输入的是否是数字
private void textBoxParam1_TextChanged(object sender,EventArgs e) { Match m = Regex.Match(this.textBoxParam1.Text,pattern); // 匹配正则表达式 //或者boolean flag = Regex.IsMatch(this.textBoxParam1.Text,pattern),然后对flag进行判断+处理 if (!m.Success) // 输入的不是数字 { //弹出警告 } else // 输入的是数字 { //进行处理 } }
这样,就基本上实现了用正则表达式限制TextBox的输入数字了。另外需要说明的是match返回的是单个的匹配,而matches是一组匹配。IsMatch则是返回的布尔值。
其他的判断也是类似,只要设定比较的正则表达式的内容即可,下面给出常用正则表达式(均通过本人亲自验证):
只能输入数字:"^[0-9]*$"。
只能输入n位的数字:"^\d{n}$"。
输入至少n位的数字:"^\d{n,}$"。
只能输入m~n位的数字:。"^\d{m,n}$"
只能输入零或者非零开头的数字:"^(0|[1-9][0-9]*)$"。
只能输入有两位小数的正实数:"^[0-9]+(\.[0-9]{2})?$"。//对于00.12,00等也认为合法。
只能输入有两位小数的实数:"^-?[0-9]+(\.[0-9]{2})?$"。
只能输入有1~3位小数的正实数:"^[0-9]+(\.[0-9]{1,3})?$"。
只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
只能输入非零的负整数:"^-[1-9][]0-9"*$。
只能输入长度为3的字符:"^.{3}$"。//非空白字符
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&',;=?$/"等字符:"[^%&',;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
关于正则表达式的更详细的内容参见下面链接:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html