本分步文章介绍了如何创建和使用正则表达式来确定字符串是否与某些模式匹配。
原始产品版本: Visual C#
原始 KB 数: 308252
总结
正则表达式允许轻松分析和匹配字符串到特定模式。 使用命名空间中 RegularExpressions
可用的对象,可以将字符串与给定模式进行比较,将字符串模式替换为另一个字符串,或只检索格式化字符串的部分。 在此示例中,我们将构造一个用于验证电子邮件地址的模式。 本文介绍Microsoft .NET Framework 类库命名空间 System.Text.RegularExpressions
。
要求
本文假定你熟悉以下主题:
- Visual C#
- 正则表达式语法
使用正则表达式匹配模式
启动 Visual C#。
创建新的 Visual C# 控制台应用程序。
在命名空间上
Text.RegularExpressions
指定 using 关键字,以便稍后在代码中限定这些命名空间中的声明。 在任何其他声明之前,必须使用 using 语句:using System.Text.RegularExpressions;
定义一个新的正则表达式,该表达式将使用模式匹配来验证电子邮件地址。 以下正则表达式的结构用于完成三项操作:
- 捕获符号前的
@
子字符串,并将其user
放入组中。 - 捕获符号后的
@
子字符串,并将其host
放入组中。 - 确保字符串的前半部分没有
@
符号。
Regex emailregex = new Regex("(?<user>[^@]+)@(?<host>.+)");
- 捕获符号前的
定义包含有效电子邮件地址的新字符串。 如果方法的命令行参数为空,则提供默认值:
String s = "johndoe@tempuri.org";
检查是否存在任何命令行参数;如果有,请检索第一个参数,并将其分配给变量
s
。if (args.Length > 0) { s = args[0]; }
使用该方法
Match
传入电子邮件地址变量并返回新Match
对象。 无论是否在源字符串中找到任何匹配项,该Match
对象都将返回。Match m = emailregex.Match(s);
通过检查属性
Success
,我们可以决定是继续处理Match
对象还是打印错误消息。 如果成功,则user
显示对象集合Match
中的Groups
命名host
组。if (m.Success) { Console.WriteLine ("User: " + m.Groups["user"].Value); Console.WriteLine ("Host: " + m.Groups["host"].Value); } else { Console.WriteLine (s + " is not a valid email address"); } Console.WriteLine ();
若要在运行应用程序后使控制台窗口保持打开状态,请添加以下代码行:
System.Console.WriteLine("Press Enter to Continue..."); System.Console.ReadLine();
生成项目。
若要使用代码中指定的默认电子邮件地址在开发环境中运行应用程序,请按 F5 或从“调试”菜单中选择“开始”。 若要使用命令行参数启动应用程序,有三个选项:
- 在“项目”菜单上,单击“属性”,然后单击“调试”。 在右窗格中的“开始选项”部分中,指定要测试的电子邮件地址。 按 F5,或单击“调试”菜单上的“开始”以运行应用程序。
- 启动命令窗口,导航到 项目所在的文件夹下的 bin 或 debug 文件夹。 然后键入可执行文件的名称,后跟要测试的电子邮件地址。
- 找到此项目的可执行文件,并将其拖到 “开始...”...任务栏上的“运行 ”窗口。 添加电子邮件地址以验证,然后单击“ 确定”。