Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29335419
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2010-01-31 18:40:29

ASP正则学习专题

RegExp对象提供简单的正则表达式支持功能.

示例:

Set regEx = New RegExp                                         ' 建立正则表达式。创建对象
regEx.Pattern = patrn                                               '
设置模式。        设置对象属性   
regEx.IgnoreCase = True                                         '
设置是否区分字符大小写。
regEx.Global = True                                                '
设置全局可用性。
Set Matches = regEx.Execute(strng)                         '
执行搜索。      设置对象方法

 

RegExp 对象的属性

1、  Global 属性

Global属性设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。(有点类似于SED命令中的/g选项)

语法
object.Global [= True | False ]

object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 True

 

2、  IgnoreCase属性

IgnoreCase属性设置或返回一个Boolean值,指明模式搜索是否区分大小写。

语法
object.IgnoreCase [= True | False ]

object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 True

 

3、  Pattern属性

Pattern属性设置或返回被搜索的正则表达式模式。(即你要写的正则表达式内容)

语法
object.Pattern [= "searchstring"]

 

RegExp对象的方法

1、 Execute方法

Execute方法对指定的字符串执行正则表达式搜索。

PS:得先指定好要搜索匹配的字符串然后再运行此方法

语法
object.Execute(string)

语法部分描述
object
必需的。总是一个 RegExp 对象的名称。
string
必需的。要在其上执行正则表达式的文本字符串。

PS:即 要查找的字符串内容值!

返回了一个matches集合

 

 

Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。

示例:

RegExpTest = regEx.Execute(strng) ' 执行搜索。 返回一个Matches集合

 

2、 Replace方法

Replace方法替换在正则表达式查找中找到的文本。

语法
object.Replace(string1, string2)

语法部分描述
object
必需的。总是一个 RegExp 对象的名称。
string1
必需的。string1 是将要进行文本替换的字符串。 (选定的文本内容)
string2
必需的。 string2 是替换文本字符串。                 (替换的新文本内容)

ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。         (将匹配的文本进行替换)

 

3、 Test方法

Test方法对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 指示是否找到匹配的模式。

object.Test(string)
语法部分描述
object
必需的。总是一个 RegExp 对象的名称。
string
必需的。要执行正则表达式搜索的文本字符串。

 

说明
  正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False

 

Test 方法的用法:
Function RegExpTest(patrn, strng)
Dim regEx, retVal '
建立变量。
Set regEx = New RegExp '
建立正则表达式。
regEx.Pattern = patrn '
设置模式。
regEx.IgnoreCase = False '
设置是否区分大小写。
retVal = regEx.Test(strng) '
执行搜索测试。
If retVal Then
RegExpTest = "
找到一个或多个匹配。"
Else
RegExpTest = "
未找到匹配。"
End If
End Function

 

 

 

 

Match 对象的属性

Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的。所有的 Match 对象属性都是只读的。

在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的长度,以及找到匹配的索引位置等。

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         ' 遍历 Matches 集合。
    RetStr = RetStr & "Match " & I & " found at position "
    RetStr = RetStr & Match.FirstIndex & ". Match Value is "'
    RetStr = RetStr & Match.Value & "'." & vbCRLF
  Next
  RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

 

属性

1、  FirstIndex

返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于搜索字符串的起始位置而言的。换言之,字符串中的第一个字符被标识为字符 0

 

2、  Length

返回在字符串搜索中找到的匹配的长度。

 

3、  Value

返回在一个搜索字符串中找到的匹配的值或文本。

 

 

总结一下:

<%

Sub RegMatchTest(pattern,nstring)

       Dim regEx,Match,Matches

       Set regEx = new RegExp                    声明对象

       regEx.Pattern = pattern                       设置模式

       regEx.IgnoreCase = True

       regEx.Global = True

       Set matches = regEx.execute(nstring)   执行匹配 返回一个Matches对象集合

       retVal = regEx.Test(nstring)                 返回布尔类型

       If retVal Then

              For Each match In matches         遍历

                     output = output & match.firstIndex     属性

                     output = output & match.value

                     response.write output

              Next

       Else

              response.write "no match"    

       End If

End Sub

Dim pattern,strings

pattern = "^\d{5,12}$"

strings = "dadf844081222adsf845969asdf566"

RegMatchTest pattern,strings

%>

 

 

 

 
阅读(1045) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~