RegExp对象是VBScript中用于提供简单地正则表达式支持的对象。VBScript中所有和正则表达式有关的属性和方法都有这个对象有关联。

一、RegExp对象的属性和方法(三个属性,三个方法)

属性:

1. Global属性: True or False, 指明模式是匹配整个字符串中所有与之相符的地方还是只匹配第一次出现的地方。默认值是False(表示只匹配第一次出现的地方)。

2. IgnoreCase属性: True or False, 指明模式匹配是否大小写敏感。默认是False(表示搜索为大小写敏感)。

3. Pattern属性:设置或返回用于搜索的正则表达式。

方法:

1. Execute方法:将正则表达式应用到字符串上并返回Matches集合。

2. Replace方法:替换在正则表达式搜索中找到的文本。

3. Test方法:对字符串执行正则表达式搜索,并返回一个布尔值说明匹配是否成功(True:匹配成功, False:匹配不成功)。

二、VBScript中的正则表达式字符

字符 描述
\ 表示下一个字符是特殊字符或文字常量
^ 匹配输入的开头
$ 匹配输入的结尾
* 匹配前一个字符零次或多次
+ 匹配前一个字符一次或多次
? 匹配前一个字符零次或一次
. 匹配除换行符以外的任何单个字符
(pattern)

匹配并记住这个模式。可以用[0]…[n]从结果的matches集合中获取匹配到的字符串。要匹配括号本身,在前面加上斜杠-用"\("或"\)"

(?:pattern) 匹配但不捕获模式,也就是不会存储匹配结果供以后使用。这可以用于使用"or"字符(|)合并模式的不同部分。例如,"anomal(?:y|ies)"比"anomaly|anomalies"要划算得多
(?=pattern) 当所要搜索的字符串匹配了模式的开头部分时就接着匹配这一部分。非捕获匹配,也就是说不会保存匹配结果供以后使用。例如,"Windows (?=95|98|NT|2000|XP|Vista)"能匹配"Windows Vista"中的Windows而不能匹配"Windows 3.1"中的Windows
(?!pattern) 与上一个相反,这会匹配模式中没有出现的内容。非捕获匹配。例如,"Windows (?!95|98|NT|2000|XP|Vista)"能匹配"Windows 3.1"中的Windows而不能匹配"Windows Vista"中的Windows
x|y 匹配x或y
{n} 准确地匹配n次(n必须是一个非负整数)
{n,} 至少匹配n次(n必须是一个非负整数-注意结尾的逗号)
{n,m} 至少匹配n次,最多匹配m次(m和n必须都是非负整数)
[xyz] 匹配其中包括的任一个字符(xyz表示一个字符集)
[^xyz] 匹配其中不包括的字符(^xyz表示一个字符集的补集)
[a-z] 匹配指定范围内的字符(a-z表示字符的范围)
[^m-z] 匹配指定范围以外的字符(^m-z表示指定范围的补集)
\b 匹配一个单词边界,这个位置在单词和空格之间
\B 匹配一个非单词边界
\d 匹配数字。等价于[0-9]
\D 匹配非数字。等价于[^0-9]
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\s 匹配空白,包括空格、制表符、换页符等。等价于"[\f\n\r\t\v]"
\S 匹配非空白的字符。等价于"[^\f\n\r\t\v]"
\t 匹配制表符
\v 匹配纵向制表符
\w 匹配字母、数字,以及下划线。等价于"[A-Za-z0-9_]"
\W 匹配非字符数字。等价于"[^A-Za-z0-9\_]"
\. 匹配.
\| 匹配|
\{ 匹配{
\} 匹配}
\[ 匹配[
\] 匹配]
\( 匹配(
\) 匹配)
$num 匹配num,其中num是正整数。返回匹配结果的引用
\n 匹配n,其中n是八进制转义符。八进制转义符的长度应为1、2或3
\uxxxx 匹配UNICODE形式的ASCII字符
\xn 匹配n,其中n是十六进制转义符。十六进制转义符必须是两位长度
\\ 匹配\

三、实例

1、验证电话号码输入:

Dim re, s, objMatch, colMatches
Set re = New RegExp
re.Pattern = "\([0-9]{3}\)[0-9]{4}-[0-9]{4}"
re.Global = True
re.IgnoreCase = True
s = InputBox("Enter your phone number in the following Format (XXX)XXXX-XXXX:")
If re.Test(s) Then
    MsgBox "Thank you!"
Else
    MsgBox "Sorry but that number is not in a valid format."
End If

2、分解URI:将URI分解成协议(如ftp、http等)、域名地址、页面和路径四个部分。

Dim re, s 
Set re = New RegExp
re.Pattern = "(\w+):\/\/([^/:]+)(:\d*)?([^#]*)"
re.Global = True
re.IgnoreCase = True
s = "http://www.wrox.com:80/misc-pages/support.shtml"
MsgBox re.Replace(s, "$1")
MsgBox re.Replace(s, "$2")
MsgBox re.Replace(s, "$3")
MsgBox re.Replace(s, "$4")

3. 检查HTML元素: "<(.*)>.*<\/\1>"

4. 匹配空白: "^[\t]*$"

5. 匹配HTML注释标签: "^.*<!--.*—>.*$"

将上述匹配模式稍作修改,匹配HTML注释标签并清除HTML注释:

Dim re, s
Set re = New RegExp
re.Pattern = "(^.*)(<!--.*-->)(.*$)"
re.Global = True
s= "<title>A Title</title><!-- a title tag -->"
If re.Test(s) Then
    MsgBox "HTML comment tags found."
Else
    MsgBox "No HTML comment tags found."
End If
MsgBox re.Replace(s,"$1" & "$3")

参考资料:《VBScript程序员参考手册》

VBScript: 正则表达式(RegExp对象)的更多相关文章

  1. JavaScript学习笔记-正则表达式(RegExp对象)

    正则表达式(RegExp对象)   1.正则表达式字面量,在脚本加载后编译.若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译: 2.使用构造函数创建的RegExp,提供了 ...

  2. JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象

    JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义      查找以八进制数 规定的字符.     查找以十六进制数 规定 ...

  3. javascript正则表达式 —— RegExp 对象

    定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegExp 对象,其模式是 "e": ...

  4. JavaScript正则表达式-RegExp对象

    RegExp对象方法 exec():与String对象的match()方法功能相同. 参数为被搜索字符串.返回数组或null. test():与String对象的search()方法功能相同. 参数为 ...

  5. 正则表达式RegExp对象

    3.1 正则表达式对象的创建方式 字面量的方式   var patt = /匹配规则/修饰符;     / --> 边界的意思 new关键字     var patt = new RegExp( ...

  6. VBS基础篇 - RegExp 对象

    正则表达式(RegExp)对象下面的代码说明了RegExp对象的用法: Function RegExpTest(patrn, strng) Dim regEx, Match, Matches '创建变 ...

  7. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  8. 正则表达式(RegExp)

    正则表达式(RegExp) 如何按一定规则快速查找到需要找寻的内容,js的设计者们给我们提供了一个叫正则表达式(RegExp对象),专门用于处理类似问题. RegExp对象表示正则表达式,它是对字符串 ...

  9. JavaScript数据类型 正则表达式RegExp类型

    前言 上一篇文章已经介绍了正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将 ...

随机推荐

  1. HTTP verb的安全性和幂等性

    Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性. 安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态.即, ...

  2. 给QT不规则窗口添加阴影

    在家休息,试着用QT去模仿各类管家软件的界面,做到自绘阴影的时候,蛋疼了. 网上搜到的基本都是一篇文章转来转去,一开始也被思路限制了. 尝试重载paintEvent,然后自己绘制矩形阴影,但是绘制的算 ...

  3. 团体程序设计天梯赛-练习集L2-004. 这是二叉搜索树吗

    L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...

  4. [BEC][hujiang] Lesson04 Unit1:Working life ---Reading + Listening &Grammar & Speaking

    4 1.1 Working life    P10 Reading----The anonymous CV Exercise 3  What should be included in the CV ...

  5. PHP 7 值得期待的新特性(下)

    这是我们期待已久的 PHP 7 系列文章的第二篇.点此阅读 第一篇本文系 OneAPM 工程师编译整理. 也许你已经知道,重头戏 PHP 7 的发布将在今年到来!现在,让我们来了解一下,新版本有哪些新 ...

  6. POJ3096Surprising Strings(map)

    题意:输入很多字符串,以星号结束.判断每个字符串是不是“Surprising Strings”,判断方法是:以“ZGBG”为例,“0-pairs”是ZG,GB,BG,这三个子串不相同,所以是“0-un ...

  7. HDU4607+BFS

    /* bfs+求树的直径 关键:if k<=maxs+1 直接输出k-1: else: k肯定的是包括最长路.先从最长路的起点出发,再走分支,最后到达最长路的终点. 因此是2*(k-(maxs+ ...

  8. ANDROID_MARS学习笔记_S01_008Linear_layout例子

    1.netstone_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  9. log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.lo .

    log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a &quo ...

  10. WPF控件模板和数据模板

    来自:http://www.th7.cn/Program/WPF/2011/12/21/51676.shtml ControlTemplate用于描述控件本身. 使用TemplateBinding来绑 ...