VBscript中的正则表达式

VBscript中的正则表达式

在VBscript中,正则表达式对象就是RegExp对象。RegExp对象有3个属性:

  • Pattern 属性,设置或返回被搜索的正则表达式模式。
  • Global  属性,指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。
  • IgnoreCase 属性,指明模式搜索是否区分大小写。

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"))

运行例程2  

两种语言正则表达式的用法对照表

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 = NewRegExp
regEx.Pattern = ".*(@hotmail.com)"  //该句为正则表达式
regEx.IgnoreCase = True
a=regEx.Test(str1)
If a=TrueThen
  MsgBox("Match")
Else
  MsgBox("Not Match")
EndIf


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值