
- 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 = "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>