本文的翻译是专门为“ C#Developer”课程的学生准备的。
Regex类使用C#实现正则表达式。 在本文中,您将学习如何使用C#正则表达式来验证各种用户输入。C#中的正则表达式实现正则表达式。 C#Regex类提供了用于分析大型文本以搜索字符模式的方法和属性。 在本文中,您将学习如何在C#中使用.NET Regex类。
正则表达式
正则表达式用于检查字符串是否与模式匹配。 正则表达式(正则表达式或regex或regexp)是定义模式的一系列字符。 模式可以由文字,数字,字符,运算符或构造组成。 该模式用于查找字符串或文件中的匹配项。
在检查输入,解析和查找字符串时,经常使用正则表达式。 例如,检查有效的出生日期,社会保险号,全名(姓名和姓氏之间用逗号分隔),查找子字符串的出现次数,替换子字符串,日期格式,有效的电子邮件格式,货币格式等。
正则表达式类
在.NET中,Regex类表示正则表达式引擎。 它可用于快速分析大量文本以查找特定的字符模式,提取,编辑,替换或删除文本子字符串,并将提取的字符串添加到集合中以生成报告。
Regex类在System.Text.RegularExpressions命名空间中定义。 Regex类的构造函数将模板字符串以及其他可选参数作为参数。
以下代码段从一个模式创建一个正则表达式。 在此,图案对应于以字母“ M”开头的单词。
以下代码片段包含一个长文本,其中包含需要分析的作者的姓名。
Matches方法用于在正则表达式中查找所有匹配项,并返回MatchCollection。
下一段代码将经过一系列匹配。
这是完整的代码:
在上面的示例中,代码查找字符“ M”。 但是如果单词以“ m”开头怎么办。 以下代码段使用
RegexOptions.IgnoreCase
参数,以便Regex不区分大小写。
用正则表达式替换多个空格
Regex.Replace()
方法用于将匹配的字符串替换为新的字符串。 下面的示例在一个字符串中搜索一个空格中的多个空格。
以下代码段用'-'替换空格。
string CleanedString = Regex.Replace(badString, "\\s+", "-");
使用正则表达式将字符串拆分为字符
在下面的示例中,正则表达式模式[az] +和
Regex.Split()
方法用于将字符串拆分为字符,而不
Regex.Split()
。
C#中的正则表达式
正则表达式是用于解析和更改字符串的模式匹配标准,并允许用户表达计算机程序应如何在文本中查找指定的模式,以及当找到与给定模式的每次匹配时该怎么做。 有时它们缩写为“ regex”。 它们是查找和修改采用特定格式的字符串的有效方法。
这是一个简单的C#代码示例,显示了如何使用正则表达式。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace RegularExpression1 { class Program { static void Main(string[] args) { Regex r = new Regex(@"^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}");
这是正则表达式及其在C#和.NET中的用法的详细说明:
C#中的正则表达式正则表达式检查电子邮件
要测试多个电子邮件地址,我们可以使用以下正则表达式。 我们使用定界符';'分隔地址
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;]{0,1}\s*)+$
如果要使用定界符',请使用以下命令
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[,]{0,1}\s*)+$
以及是否要同时使用定界符','和';' 然后用这个
^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;,.]{0,1}\s*)+$
因此,使用上述正则表达式,您可以一次检查一个或多个地址。
在此处查找更多信息:正则
表达式,用于检查多个电子邮件地址 。
使用正则表达式验证用户输入
本文介绍了如何在C#和.NET中使用正则表达式(System.Text.RegularExpressions命名空间的Regex类)。
我们可以使用Regex.Match方法,该方法接受输入和正则表达式,如果满足则返回成功
if (!Regex.Match(firstNameTextBox.Text, "^[AZ][a-zA-Z]*$").Success) {} if (!Regex.Match(addressTextBox.Text, @"^[0-9]+\s+([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(cityTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(stateTextBox.Text, @"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success) if (!Regex.Match(zipCodeTextBox.Text, @"^\d{5}$").Success) { if (!Regex.Match(phoneTextBox.Text, @"^[1-9]\d{2}-[1-9]\d{2}-\d{4}$").Success)
在此处了解更多信息:
使用正则表达式验证用户输入在C#中使用Regex.split(regex)分割字符串
在这一部分中,我们将学习如何在C#中使用RegEx中断字符串。 正则表达式根据模式中断字符串。 它处理指定为模板的定界符。 这就是正则表达式比string.Split更好的原因。 以下是一些有关如何在C#中使用Regex中断字符串的示例。 让我们编写代码。
要使用Regex拆分字符串,请添加以下名称空间。
using System; using System.Text.RegularExpressions; using System.Collections.Generic;
范例1:使用正则表达式将数字和字符串分开。
string Text = "1 One, 2 Two, 3 Three is good."; string[] digits = Regex.Split(Text, @"\D+"); foreach (string value in digits) { int number; if (int.TryParse(value, out number)) { Console.WriteLine(value); } }
上面的代码使用\ D +分隔字符串,并通过遍历结果输出数字。
在此处了解更多信息:
在C#中使用正则表达式拆分字符串用正则表达式替换字符串中的特殊字符
在这一部分中,我将告诉您如何在C#中用正则表达式替换特殊字符。
如果您有一个包含特殊字符的字符串,并且想要删除或替换它们,则可以为此使用正则表达式。
使用以下代码:
Regex.Replace(your String, @"[^0-9a-zA-Z]+", "")
此代码将删除所有特殊字符,但是如果您不想删除某些特殊字符,例如,逗号“,”和冒号“:”-进行以下更改:
Regex.Replace(Your String, @"[^0-9a-zA-Z:,]+", "")
同样,您可以根据需要进行更改。
注意事项:
应该注意的是,正则表达式并不是每一个小的字符串操作的灵丹妙药。 如果需要String类或其他类提供的简单解析,请尝试并使用它。
进一步阅读
如果您不熟悉正则表达式,建议阅读这篇文章,正则表达式
简介 。
这是另一篇文章:“
在C#中使用正则表达式 ”