.NET正则表达式应用示例

2009年5月14日星期四

.NET正则表达式应用示例


下面的代码示例使用静态Regex.IsMatch方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址,则IsValidEmail方法返回true,否则返回false,但不采取其他任何操作。您可以使用IsValidEmail,在应用程序将地址存储在数据库中或显示在ASP.NET页中之前,筛选出包含无效字符的电子邮件地址。

[VisualBasic]
FunctionIsValidEmail(strInAsString)AsBoolean
'ReturntrueifstrInisinvalide-mailformat.
ReturnSystem.Text.RegularExpressions.Regex.IsMatch(strIn,(^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$)
EndFunction

[C#]
boolIsValidEmail(stringstrIn)
{
//ReturntrueifstrInisinvalide-mailformat.
returnRegex.IsMatch(strIn,@^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$);
}
2.清理输入字符串

下面的代码示例使用静态Regex.Replace方法从字符串中抽出无效字符。您可以使用这里定义的CleanInput方法,清除掉在接受用户输入的窗体的文本字段中输入的可能有害的字符。CleanInput在清除掉除@、-(连字符)和.(句点)以外的所有非字母数字字符后返回一个字符串。

[VisualBasic]
FunctionCleanInput(strInAsString)AsString
'Replaceinvalidcharacterswithemptystrings.
ReturnRegex.Replace(strIn,[^\w\.@-],)
EndFunction

[C#]
StringCleanInput(stringstrIn)
{
//Replaceinvalidcharacterswithemptystrings.
returnSystem.Text.RegularExpressions.Regex.Replace(strIn,@[^\w\.@-],);
}
3.更改日期格式

以下代码示例使用Regex.Replace方法来用dd-mm-yy的日期形式代替mm/dd/yy的日期形式。

[VisualBasic]
FunctionMDYToDMY(inputAsString)AsString
ReturnRegex.Replace(input,_
\b(?\d{1,2})/(?\d{1,2})/(?\d{2,4})\b,_
${day}-${month}-${year})
EndFunction

[C#]
StringMDYToDMY(Stringinput)
{
returnRegex.Replace(input,
\\b(?\\d{1,2})/(?\\d{1,2})/(?\\d{2,4})\\b,
${day}-${month}-${year});
}
Regex替换模式

本示例说明如何在Regex.Replace的替换模式中使用命名的反向引用。其中,替换表达式${day}插入由(?...)组捕获的子字符串。

有几种静态函数使您可以在使用正则表达式操作时无需创建显式正则表达式对象,而Regex.Replace函数正是其中之一。如果您不想保留编译的正则表达式,这将给您带来方便

4.提取URL信息

以下代码示例使用Match.Result来从URL提取协议和端口号。例如,http://www.contoso.com:8080/letters/readme.html将返回http:8080。

[VisualBasic]
FunctionExtension(urlAsString)AsString
DimrAsNewRegex(^(?\w+)://[^/]+?(?:\d+)?/,_
RegexOptions.Compiled)
Returnr.Match(url).Result(${proto}${port})
EndFunction

[C#]
StringExtension(Stringurl)
{
Regexr=newRegex(@^(?\w+)://[^/]+?(?:\d+)?/,
RegexOptions.Compiled);
returnr.Match(url).Result(${proto}${port});

0 评论:

发表评论