正则表达式是形成模式的字符序列,主要用于搜索和替换。创建模式的目的是匹配特定的字符串,以便开发人员可以根据条件提取字符并替换某些字符。
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