VBscript中的正则表达式
在VBscript中,正则表达式对象就是RegExp对象。RegExp对象有3个属性:
RegExp对象有3种方法:
- object.Execute(string) 对指定的字符串执行正则表达式搜索。Execute方法返回一个 Matches 集合,其中包含了在string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。
- object.Test(string) 对指定的字符串执行一次测试性搜索,只返回一个 Boolean值指示是否存在匹配。
- object.Replace(string1,string2) 替换在正则表达式中找到的文本。搜索string1,用string2替换。返回string1被替换后的字符串。
这里object是已定义的正则表达式,string是被搜索的文本。要查找的是用Pattern描述的正则表达式模式。
例程1 创建一个正则表达式,并演示替换方法。
Function ReplaceTest(patrn,replStr) Dim regEx,str1 str1 = "The quick brown fox jumped over the lazy dog." Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True ReplaceTest = regEx.Replace(str1,replStr) End Function MsgBox(ReplaceTest("fox","cat"))
这个例程请读者自己拷贝下来运行。
Match对象和Matches集合
只能通过 RegExp 对象的Execute 方法来创建,该方法实际上返回了Match 对象的集合Matches。所有的Match 对象属性都是只读的。每个Match 对象提供了被正则表达式搜索找到的匹配字符串的开始位置、长度,字符串本身等信息,通过Match对象的属性供用户访问。
- FirstIndex 在搜索字符串中匹配的位置。
- Length 匹配字符串的长度。
- Value 找到的匹配字符串。
例程2 创建一个正则表达式,执行搜索,并显示每一个匹配的结果。
Function RegExpTest(patrn,strng)
Dim regEx,Match,Matches
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(strng)
For Each Match in Matches
RetStr = RetStr & "Match " & Match & " found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is "
RetStr = RetStr & Match.Value & "'." & "<br>"
Next
RegExpTest = RetStr
End Function
document.write (RegExpTest("is.","IS1 is2 IS3 is4"))
两种语言正则表达式的用法对照表
VBscript的RegExp对象 | Javascript的正则表达式 |
IgnoreCase属性 | 创建语法中的开关switch ="i" |
Global属性 | 创建语法中的开关switch ="g" |
Pattern属性 | 创建语法中的Pattern参数 |
matchs对象集合 | 属性$1 - $9 |
Execute方法 | exec方法 |
Test方法 | test方法 |
Replace方法 | 没有对应方法,但有字符串对象的replace方法 |
没有对应的方法 | compile方法 |
没有对应的属性 | source属性 |
有许多用于正则表达式模式的特殊字符,这在两种语言中是一样的。
====================================================================================
Dim regEx, str1
Dim a
str1 = "jacky@hotmail.com"
Set regEx = New RegExp
regEx.Pattern = ".*(@hotmail.com)" //该句为正则表达式
regEx.IgnoreCase = True
a=regEx.Test(str1)
If a=True Then
MsgBox("Match")
Else
MsgBox("Not Match")
End If