正则表达式是形成模式的字符序列,主要用于搜索和替换。创建模式的目的是匹配特定的字符串,以便开发人员可以根据条件提取字符并替换某些字符。
RegExp对象
RegExp对象可帮助开发人员匹配字符串模式,而属性和方法可帮助我们轻松使用正则表达式。它类似于JavaScript中的RegExp
Properties
- 模式-模式方法代表用于定义正则表达式的字符串,应在使用正则表达式对象之前进行设置。
- IgnoreCase-一个布尔属性,表示是否应该对字符串中所有可能的匹配(如果为true或false)测试正则表达式。如果未明确指定,则IgnoreCase值设置为False。
- 全局-布尔属性,表示是否应针对字符串中所有可能的匹配项测试正则表达式。如果未明确指定,则全局值设置为False。
方法
- Test(搜索字符串)-Test方法将字符串作为其参数,如果正则表达式可以成功地与字符串匹配,则返回True,否则返回False。
- Replace(搜索字符串,替换字符串)-替换方法采用2个参数。如果搜索成功,则将其替换为替换字符串,并返回新字符串。如果没有匹配项,则返回原始搜索字符串。
- Execute(搜索字符串)-Execute方法的作用类似于Replace,不同之处在于它返回Matches集合对象,其中包含每个成功匹配项的Match对象。它不会修改原始字符串。
匹配集合对象
作为Execute方法的结果,返回Matches集合对象。该集合对象可以包含零个或多个Match对象,并且该对象的属性是只读的。
- Count -Count方法代表集合中匹配对象的数量。
- Item -Item方法使可以从matchs集合对象访问match对象。
匹配对象
Match对象包含在matchs集合对象中。这些对象表示搜索字符串后的成功匹配。
- FirstIndex-它表示原始字符串在其中发生匹配的位置。该索引从零开始,这意味着字符串中的第一个位置为0。
- Length -代表匹配字符串总长度的值。
- Value-代表匹配值或文本的值。也是访问Match对象时的默认值。
关于模式参数的全部
模式构建类似于PERL。在使用正则表达式时,模式构建是最重要的。在本节中,我们将处理如何基于各种因素创建模式。
位置匹配
位置匹配的意义在于确保将正则表达式放在正确的位置。
| 符号 | 描述 |
|---|---|
| ^ | 仅匹配字符串的开头。 |
| $ | 仅匹配字符串的结尾。 |
| \ b | 匹配任何单词边界 |
| \ B | 匹配任何非单词边界 |
文字匹配
任何形式的字符(例如字母,数字或特殊字符,甚至十进制,十六进制)都可以视为文字。由于在正则表达式的上下文中,很少有字符具有特殊含义,因此我们需要使用转义序列对它们进行转义。
| 符号 | 描述 |
|---|---|
| 字母数字 | 仅匹配字母和数字字符。 |
| \ n | 匹配新行。 |
| \ [ | 匹配[仅文字 |
| \] | 仅匹配]文字 |
| \( | 匹配项(仅文字 |
| \) | 仅匹配)文字 |
| \ t | 匹配水平制表符 |
| \ v | 匹配垂直标签 |
| \ | | 火柴| 仅文字 |
| \ { | 匹配{仅文字 |
| \} | 仅匹配}文字 |
| \\ | 仅匹配\文字 |
| \? | 火柴 ?仅文字 |
| \ * | 仅匹配*文字 |
| \ + | 仅匹配+文字 |
| \。 | 火柴 。仅文字 |
| \ b | 匹配任何单词边界 |
| \ B | 匹配任何非单词边界 |
| \F | 匹配换页 |
| \ r | 匹配回车 |
| \ xxx | 匹配八进制数字xxx的ASCII字符。 |
| \ xdd | 匹配十六进制数字dd的ASCII字符。 |
| \ uxxxx | 匹配UNICODE文字xxxx的ASCII字符。 |
字符类匹配
字符类是由定制分组形成的模式,并包含在[]大括号内。如果我们期望一个字符类不应该出现在列表中,那么我们应该使用负号(cap ^)忽略该特定字符类。
| 符号 | 描述 |
|---|---|
| [xyz] | 匹配字符集中包含的任何字符类。 |
| [^ xyz] | 匹配未包含在字符集中的任何字符类。 |
| 。 | 匹配\ n以外的任何字符类 |
| \ w | 匹配任何单词字符类。等效于[a-zA-Z_0-9] |
| \ W | 匹配任何非单词字符类。等效于[^ a-zA-Z_0-9] |
| \ d | 匹配任何数字类。相当于[0-9]。 |
| \ D | 匹配任何非数字字符类。等效于[^ 0-9]。 |
| \ s | 匹配任何空格字符类。相当于[\ t \ r \ n \ v \ f] |
| \ S | 匹配任何空格字符类。等效于[^ \ t \ r \ n \ v \ f] |
重复匹配
重复匹配允许在正则表达式中进行多次搜索。它还指定元素在正则表达式中重复的次数。
| 符号 | 描述 |
|---|---|
| * | 匹配零个或多个给定的正则表达式。等效于{0,}。 |
| + | 匹配给定正则表达式的一个或多个出现。等效于{1,}。 |
| ? | 匹配零个或一次出现的给定正则表达式。等效于{0,1}。 |
| {X} | 精确匹配给定正则表达式的出现次数x。 |
| {X,} | 匹配至少x个或多个给定的正则表达式。 |
| {x,y} | 将x到y匹配给定正则表达式的出现次数。 |
交替与分组
交替和分组可以帮助开发人员创建更复杂的正则表达式,尤其是在处理正则表达式中的复杂子句时,从而提供了极大的灵活性和控制力。
| 符号 | 描述 |
|---|---|
| 0 | 对子句进行分组以创建子句。“(xy)?(z)”与“ xyz”或“ z”匹配。 |
| | | 交替组合一个正则表达式子句,然后匹配任何单个子句。“(ij)|(23)|(pq)”与“ ij”或“ 23”或“ pq”匹配。 |
建立正则表达式
下面给出的一些示例清楚地说明了如何构建正则表达式。
| 正则表达式 | 描述 |
|---|---|
| “ ^ \ s * ..”和“ .. \ s * $” | 表示一行中可以有任意数量的前导和尾随空格字符。 |
| “(((\ $ \ s?)|(#\ s?)))?” | 表示可选的$或#符号,后跟可选的空格。 |
| “(((\ d +(\。(\ d \ d)?)?))” | 表示存在至少一位数字,后跟一个可选的小数,小数点后两位。 |
例
下面的示例检查用户是否输入了格式应匹配的电子邮件ID,以使电子邮件ID后面跟有“ @”,然后是域名。
<!DOCTYPE html>
<html>
<body>
<script language = "vbscript" type = "text/vbscript">
strid = "welcome.user@tutorialspoint.co.us"
Set re = New RegExp
With re
.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
.IgnoreCase = False
.Global = False
End With
' Test method returns TRUE if a match is found
If re.Test( strid ) Then
Document.write(strid & " is a valid e-mail address")
Else
Document.write(strid & " is NOT a valid e-mail address")
End If
Set re = Nothing
</script>
</body>
</html>作者:terry,如若转载,请注明出处:https://www.web176.com/vbscript/1097.html
支付宝
微信