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,如若转载,请注明出处:https://www.web176.com/vbscript/1097.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2020年12月4日 下午7:07
下一篇 2020年12月4日 下午7:11

相关推荐

发表回复

登录后才能评论