- VBScript 教程
- VBScript - 首页
- VBScript - 概述
- VBScript - 语法
- VBScript - 启用
- VBScript - 位置
- VBScript - 变量
- VBScript - 常量
- VBScript - 运算符
- VBScript - 决策
- VBScript - 循环
- VBScript - 事件
- VBScript - Cookie
- VBScript - 数字
- VBScript - 字符串
- VBScript - 数组
- VBScript - 日期
- VBScript 高级
- VBScript - 过程
- VBScript - 对话框
- VBScript - 面向对象
- VBScript - 正则表达式
- VBScript - 错误处理
- VBScript - 其他语句
- VBScript 有用资源
- VBScript - 问答
- VBScript - 快速指南
- VBScript - 有用资源
- VBScript - 讨论
VBScript - 正则表达式
正则表达式是由一系列字符组成的模式,主要用于搜索和替换。创建模式的目的是匹配特定的字符串,以便开发者可以根据条件提取字符并替换某些字符。
RegExp 对象
RegExp 对象帮助开发者匹配字符串的模式,其属性和方法使我们能够轻松地使用正则表达式。它类似于 JavaScript 中的 RegExp。
属性
Pattern − Pattern 方法表示用于定义正则表达式的字符串,在使用正则表达式对象之前应先设置它。
IgnoreCase − 一个布尔属性,表示如果为 true,则正则表达式是否应针对字符串中的所有可能匹配项进行测试;如果为 false,则不进行测试。如果未显式指定,则 IgnoreCase 值设置为 False。
Global − 一个布尔属性,表示正则表达式是否应针对字符串中的所有可能匹配项进行测试。如果未显式指定,则 Global 值设置为 False。
方法
Test(search-string) − Test 方法接受一个字符串作为参数,如果正则表达式可以成功与字符串匹配,则返回 True;否则返回 False。
Replace(search-string, replace-string) − Replace 方法接受 2 个参数。如果搜索成功,则它将该匹配项替换为 replace-string,并返回新的字符串。如果没有匹配项,则返回原始 search-string。
Execute(search-string) − Execute 方法的工作方式类似于 Replace,不同之处在于它返回一个 Matches 集合对象,其中包含每个成功匹配项的 Match 对象。它不会修改原始字符串。
Matches 集合对象
Matches 集合对象作为 Execute 方法的结果返回。此集合对象可以包含零个或多个 Match 对象,并且此对象的属性为只读。
Count − Count 方法表示集合中 Match 对象的数量。
Item − Item 方法使可以从 Matches 集合对象访问 Match 对象。
Match 对象
Match 对象包含在 Matches 集合对象中。这些对象表示搜索字符串后成功的匹配项。
FirstIndex − 它表示匹配项在原始字符串中出现的位置。此索引为基于零的索引,这意味着字符串中的第一个位置为 0。
Length − 表示匹配字符串的总长度的值。
Value − 表示匹配的值或文本的值。访问 Match 对象时,这也是默认值。
关于 Pattern 参数
模式构建类似于 PERL。模式构建是使用正则表达式时最重要的事情。在本节中,我们将讨论如何根据各种因素创建模式。
位置匹配
位置匹配的重要性在于确保我们将正则表达式放在正确的位置。
符号 | 描述 |
---|---|
^ | 仅匹配字符串的开头。 |
$ | 仅匹配字符串的结尾。 |
\b | 匹配任何单词边界 |
\B | 匹配任何非单词边界 |
字面量匹配
任何形式的字符,例如字母、数字或特殊字符,甚至十进制、十六进制都可以作为字面量处理。由于某些字符在正则表达式的上下文中已经具有特殊含义,因此我们需要使用转义序列对其进行转义。
符号 | 描述 |
---|---|
字母数字 | 仅匹配字母和数字字符。 |
\n | 匹配换行符。 |
\[ | 仅匹配 [ 字面量 |
\] | 仅匹配 ] 字面量 |
\( | 仅匹配 ( 字面量 |
\) | 仅匹配 ) 字面量 |
\t | 匹配水平制表符 |
\v | 匹配垂直制表符 |
\| | 仅匹配 | 字面量 |
\{ | 仅匹配 { 字面量 |
\} | 仅匹配 } 字面量 |
\\ | 仅匹配 \ 字面量 |
\? | 仅匹配 ? 字面量 |
\* | 仅匹配 * 字面量 |
\+ | 仅匹配 + 字面量 |
\. | 仅匹配 . 字面量 |
\b | 匹配任何单词边界 |
\B | 匹配任何非单词边界 |
\f | 匹配换页符 |
\r | 匹配回车符 |
\xxx | 匹配八进制数 xxx 的 ASCII 字符。 |
\xdd | 匹配十六进制数 dd 的 ASCII 字符。 |
\uxxxx | 匹配 UNICODE 字面量 xxxx 的 ASCII 字符。 |
字符类匹配
字符类是由自定义分组形成的模式,并包含在 [ ] 大括号中。如果我们期望的字符类不应在列表中,则应使用负号(^),这是一个帽子符号来忽略该特定字符类。
符号 | 描述 |
---|---|
[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 个出现。 |
替换和分组
替换和分组帮助开发者创建更复杂的正则表达式,尤其是在处理正则表达式中的复杂子句时,这提供了极大的灵活性和控制能力。
符号 | 描述 |
---|---|
() | 分组子句以创建子句。“(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 = "[email protected]" 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>