除了 asp教程.net 验证控件,在.net 中使用正则表达式的大多数情况都要使用 system.text.regularexpressions 命名空间中发现的类。特别是那些您希望熟悉的主类 regex、match 和 matchcollection。
顺便说一下,正则表达式缩写样式 regex 的发音究竟是 /reg-eks/ 还是 /rej-eks/,还有一些争议。本人倾向于后者,但两种发音都有专家赞同,所以选择哪个发音由您自己决定。
regex 类有大量的方法和属性,如果您以前没有用过它,可能会感到无所适从。下面汇总了一些最常用的方法:
方法 |
说明 |
---|---|
escape / unescape |
字符串中的转义元字符,用作表达式中的文字。 |
ismatch |
如果正则表达式在输入字符串中发现匹配,返回“ture”。 |
match |
如果在输入字符串中发现匹配,则返回匹配对象。 |
matches |
如果在输入字符串中发现包含任何或全部匹配,则返回匹配集合对象。 |
replace |
用给定的替换字符串替换输入字符串中的匹配。 |
split |
将输入字符串拆分成用正则表达式匹配分开的数组元素时,返回数组字符串。 |
除了指定很多方法外,还有一些选项可以指定,通常在 regex 对象构造函数中。由于这些选项是位屏蔽的一部分,或许可以同时指定这些选项(如,可以同时指定 multiline 和 singleline)。
方法 |
说明 |
---|---|
compiled |
当在循环中执行许多匹配操作时使用此选项。这可以节省每一循环的分析表达式步骤。 |
multiline |
它与输入字符串中的行数没有关系。确切地说,它只修改 ^ 和 $ 的方式,以便匹配行开始 (bol) 和行结尾 (eol),而不是匹配整个输入字符串的开始和结尾。 |
ignorecase |
使模式在匹配搜索字符串时忽略大小写。 |
ignorepatternwhitespace |
允许根据需要在模式中包括任意数量的空白区域,也支持使用 (?# 注释 #) 语法在模式中加入注释。 |
singleline |
它与输入字符串中的行数没有关系。更确切地说,它将导致 .(句点)元字符匹配任意字符,而不是除 n 之外的任意字符(默认情况)。 |
使用正则表达式常执行的操作包括:验证、匹配和替换。大多数情况下,可以使用 regex 类的静态方法完成这些操作,不需要实例化 regex 类本身。要执行验证,全部要做的就是必建或找到正确的表达式,然后使用 regex 类的 ismatch() 方法将表达式应用到输入字符串中。例如,下面的函数演示了如何使用正则表达式验证邮政编码:
private void validatezipbutton_click(object sender, system.eventargs e) { string zipregex = @"^d{5}$"; if(regex.ismatch(ziptextbox.text, zipregex)) { resultlabel.text = "zip is valid!"; } else { resultlabel.text = "zip is invalid!"; } }
类似的,可以使用静态 replace() 方法将匹配替换为特定字符串,如下所示:
string newtext = regex.replace(inputstring, pattern, replacementtext);
最后,可以使用如下代码遍历输入字符串的匹配集合:
private void matchbutton_click(object sender, system.eventargs e) { matchcollection matches = regex.matches(searchstringtextbox.text, matchexpressiontextbox.text); matchcountlabel.text = matches.count.tostring(); matcheslabel.text = ""; foreach(match match in matches) { matcheslabel.text += "found" + match.tostring() + " at position " + match.index + ".<br>"; } }
通常,在您需要指定默认方式以外的方式时,需要实例化 regex 类的实例。特别是在设置选项时。例如,要创建忽略大小写和模式空白区域的 regex 实例,然后检索与该表达式匹配的集合,则应使用如下代码:
regex re = new regex(pattern, regexoptions.ignorecase | regexoptions.ignorepatternwhitespace); matchcollection mc = re.matches(inputstring);
本文的下载文件中包括这些示例的完整使用版本,与简单 asp.net教程 页中的一样。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索正则表达式
, 字符串
, 实例
, regex
, 表达式
模式
,以便于您获取更多的相关知识。