总所周知,在ASP.NET应用程序中,可以通过数据验证控件来使用正则表达式,那么在Windows应用程序中,如何使用正则表达式呢?
在Windows应用程序中,可以通过使用Regex类来自定义正则表达式。如下方法中使用的了Regex类(需要添加System.Text.RegularExpressions命名空间)的IsMatch方法来自定义正则表达式,验证文本框中的输入。
Regex类表示只读正则表达式类。它还包含各种静态方法,允许在不显示创建类实例的情况下使用正则表达式类。
Regex类的常用属性和方法说明如下:
属 性 说 明
CacheSize 获取或设置已编译正则表达式的当前Regex类的缓存中的最大项数
Options 返回传入Regex构造函数的选项
RightToLeft 获取一个值,该值只是正则表达式是否从右到左进行搜索
方 法 说 明
IsMatch 指示正则表达式在输入字符串中是否找到匹配项
Match 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个Match对象返回
Matches 在输入字符串中搜索正则表达式的所有匹配项并返回所有成功的匹配,就像多次调用Match一样
Replace 用指定的替换字符串替换由正则表达式定义的字符模式的所有匹配项
Split 在由正则表达式匹配项定义的位置将输入字符串拆分为一个字符串数组
下面列举一些常用的正则表达式。
(1) 验证电子邮件
a. \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
b. \S+@\S+\. \S+
(2) 验证网址
a. http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
b. HTTP://\S+\. \S (字母大写)
c. http://\S+\. \S (字母小写)
(3) 其他
\d{6} : 验证邮政编码。
[0-9] : 表示0~9十个数字。
\d* :表示任意个数字。
\d{3,4}-\d{7,8} :表示中国大陆的固定电话号码。
\d{2}-\d{5} : 验证由两位数字、一个连字符再加5位数字组成的ID号。
<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\L\s*> : 匹配HTML标记。
1 验证输入字符串为数字#region 验证输入字符串为数字
2 /**//// <summary>
3 /// 验证输入字符串为数字
4 /// </summary>
5 /// <param name="P_str_num">输入字符</param>
6 /// <returns>返回一个bool类型的值</returns>
7 public bool validateNum(string P_str_num)
8 {
9 return Regex.IsMatch(P_str_num, "^[0-9]*$");
10 }
11 #endregion
12
13 验证输入字符串为电话号码#region 验证输入字符串为电话号码
14 /**//// <summary>
15 /// 验证输入字符串为电话号码
16 /// </summary>
17 /// <param name="P_str_phone">输入字符串</param>
18 /// <returns>返回一个bool类型的值</returns>
19 public bool validatePhone(string P_str_phone)
20 {
21 return Regex.IsMatch(P_str_phone, @"\d{3,4}-\d{7,8}");
22 }
23 #endregion
24
25 验证输入字符串为传真号码#region 验证输入字符串为传真号码
26 /**//// <summary>
27 /// 验证输入字符串为传真号码
28 /// </summary>
29 /// <param name="P_str_fax">输入字符串</param>
30 /// <returns>返回一个bool类型的值</returns>
31 public bool validateFax(string P_str_fax)
32 {
33 return Regex.IsMatch(P_str_fax, @"86-\d{2,3}-\d{7,8}");
34 }
35 #endregion
36
37 验证输入字符串为邮政编码#region 验证输入字符串为邮政编码
38 /**//// <summary>
39 /// 验证输入字符串为邮政编码
40 /// </summary>
41 /// <param name="P_str_postcode">输入字符串</param>
42 /// <returns>返回一个bool类型的值</returns>
43 public bool validatePostCode(string P_str_postcode)
44 {
45 return Regex.IsMatch(P_str_postcode, @"\d{6}");
46 }
47 #endregion
48
49 验证输入字符串为E-mail地址#region 验证输入字符串为E-mail地址
50 /**//// <summary>
51 /// 验证输入字符串为E-mail地址
52 /// </summary>
53 /// <param name="P_str_email">输入字符串</param>
54 /// <returns>返回一个bool类型的值</returns>
55 public bool validateEmail(string P_str_email)
56 {
57 return Regex.IsMatch(P_str_email,
@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
58 }
59 #endregion
60
61 验证输入字符串为网络地址#region 验证输入字符串为网络地址
62 /**//// <summary>
63 /// 验证输入字符串为网络地址
64 /// </summary>
65 /// <param name="P_str_naddress">输入字符串</param>
66 /// <returns>返回一个bool类型的值</returns>
67 public bool validateNAddress(string P_str_naddress)
68 {
69 return Regex.IsMatch(P_str_naddress,
@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
70 }
71 #endregion