Categories: VBScript 教程

VBScript高级:正则表达式

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

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

这个人很懒,什么都没有留下~

Share
Published by
terry

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

6 小时 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago