VBScript: 正则表达式(RegExp对象)
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对象)的更多相关文章
- JavaScript学习笔记-正则表达式(RegExp对象)
正则表达式(RegExp对象) 1.正则表达式字面量,在脚本加载后编译.若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译: 2.使用构造函数创建的RegExp,提供了 ...
- JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象
JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义 查找以八进制数 规定的字符. 查找以十六进制数 规定 ...
- javascript正则表达式 —— RegExp 对象
定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegExp 对象,其模式是 "e": ...
- JavaScript正则表达式-RegExp对象
RegExp对象方法 exec():与String对象的match()方法功能相同. 参数为被搜索字符串.返回数组或null. test():与String对象的search()方法功能相同. 参数为 ...
- 正则表达式RegExp对象
3.1 正则表达式对象的创建方式 字面量的方式 var patt = /匹配规则/修饰符; / --> 边界的意思 new关键字 var patt = new RegExp( ...
- VBS基础篇 - RegExp 对象
正则表达式(RegExp)对象下面的代码说明了RegExp对象的用法: Function RegExpTest(patrn, strng) Dim regEx, Match, Matches '创建变 ...
- javascript类型系统——正则表达式RegExp类型
× 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...
- 正则表达式(RegExp)
正则表达式(RegExp) 如何按一定规则快速查找到需要找寻的内容,js的设计者们给我们提供了一个叫正则表达式(RegExp对象),专门用于处理类似问题. RegExp对象表示正则表达式,它是对字符串 ...
- JavaScript数据类型 正则表达式RegExp类型
前言 上一篇文章已经介绍了正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将 ...
随机推荐
- ExtJS4.2学习(三)Grid表格(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/172.html --------------- ...
- UIScrollView的坑--UINavigationController Push后位置变化
今天在使用UIScrollView的时候遇到了一个问题,记录一下.如果这个记录有幸被您搜索到,或许对您有些帮助. 今天有这样一个需求: 在一个由导航条控制的页面中.需要显示一些信息,目前已经有10多行 ...
- js原生removeclass方法
//如果列表中有存在给定的值就删除 // function removeClass(ele,txt){ // var str = ele.className, // ary = str.split(/ ...
- 10个CSS简写/优化技巧
CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CSS 简写的最大好处就是能够显著减少CSS文件的大小,优化网站整体性能,更加容易阅 读. 下面介绍常见的CSS简写规则 ...
- cannot find w3wp.exe in VS
Same thing was happening to me, when i remembered that IIS has an idle timeout! As above the proc w3 ...
- Java 向Hbase表插入数据异常org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apache.client.HTable
出错代码如下: //1.create HTablePool HTablePool hp=new HTablePool(con, 1000); //2.get HTable from HTablepoo ...
- SQLite设置主键自动增长及插入语法
SQLite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为 ...
- java去除重复的字符串和移除不想要的字符串
在java开发中碰到了有些字符串是重复的,如果在进行业务处理要全部遍历太对的数据就会重复,所以在进行业务处理前进行一个去重操作. 这里由于业务需要所以先将字符串转化为string数组,使用split分 ...
- HDU4857——逃生(反向建图+拓扑排序)(BestCoder Round #1)
逃生 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会 ...
- Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程
导读:本文说明系统是如何注册动态广播以及静态广播,这里主要注意其注册的顺序 这篇文章主要是针对我前两篇文章 android安全问题 抢先开机启动 - 结果篇 android安全问题 抢先拦截短信 ...