<%Function RegExpTest(patrn, strng)Dim regEx, Match, Matches '建立变量。Set regEx = New RegExp '建立正则表达式。regEPattern = patrn '设置模式。regEIgnoreCase = True '设置是否区分字符大小写。regEGlobal = True '设置全局可用性。Set Matches = regEExecute(strng) '执行搜索。For Each Match in Matches '遍历匹配集合。RetStr = RetStr & "Match found at position "RetStr = RetStr & MFirstIndex & " Match Value is '"RetStr = RetStr & MValue & "'" & "
"NextRegExpTest = RetStrEnd Fwrite RegExpTest("[ij]", "IS1 Js2 IS3 is4")%>在这个例子中,我们查找字符串中有无is或者js这两个词,忽略大小写。运行的结果如下:Match found at position Match Value is 'IS1'Match found at position Match Value is 'Js2'Match found at position Match Value is 'IS3'Match found at position Match Value is 'is4'下面我们就介绍这三个对象和集合。 1、RegExp对象是最重要的一个对象,它有几个属性,其中: ○Global 属性,设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 False。 ○IgnoreCase 属性,设置或返回一个Boolean值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 False。 ○Pattern 属性,设置或返回被搜索的正则表达式模式。必选项。总是一个 RegExp 对象变量。 2、Match 对象 匹配搜索的结果是存放在Match对象中,提供了对正则表达式匹配的只读属性的访问。 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的长度,以及找到匹配的索引位置等。 ○FirstIndex 属性,返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于搜索字符串的起始位置而言的。换言之,字符串中的第一个字符被标识为字符 0 ○Length 属性,返回在字符串搜索中找到的匹配的长度。 ○Value 属性,返回在一个搜索字符串中找到的匹配的值或文本。 3、Matches 集合 正则表达式 Match 对象的集合。Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。 学习了这三个对象和集合,如何应用于字符串的判断和替换呢?regExp对象的三个方法正好解决了这个问题,它们是Replace方法、Test方法和Execute方法。 1、Replace 方法 替换在正则表达式查找中找到的文本。我们还是先看个例子:下面的例子说明了 Replace 方法的用法。<%Function ReplaceTest(patrn, replStr)Dim regEx, str1 ' 建立变量。str1 = "The quick brown fox jumped over the lazy "Set regEx = New RegExp ' 建立正则表达式。regEPattern = patrn ' 设置模式。regEIgnoreCase = True ' 设置是否区分大小写。ReplaceTest = regEReplace(str1, replStr) ' 作替换。End FunctionRwrite ReplaceTest("fox", "cat") & "
" ' 将 'fox' 替换为 'cat'。Rwrite ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1") ' 交换词对%> 2、Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegEGlobal属性对Test方法没有影响。 如果找到了匹配的模式,Test方法返回True;否则返回False。下面的代码说明了Test 方法的用法。<%Function RegExpTest(patrn, strng)Dim regEx, retVal ' 建立变量。Set regEx = New RegExp ' 建立正则表达式。regEPattern = patrn ' 设置模式。regEIgnoreCase = False ' 设置是否区分大小写。retVal = regETest(strng) ' 执行搜索测试。If retVal ThenRegExpTest = "找到一个或多个匹配。"ElseRegExpTest = "未找到匹配。"End IfEnd FunctionRwrite RegExpTest("", "IS1 is2 IS3 is4")%> 3、Execute 方法 对指定的字符串执行正则表达式搜索。正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。 Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。