Share via


建立規則運算式

「規則運算式」(Regular Expression) 描述搜尋文字本文時所要比對的一個或多個字串。 規則運算式可以做為與所要搜尋之文字進行比較的字元模式。

建構規則運算式的方式非常像是在建立算術運算式。 也就是,使用各種中繼字元及運算子結合小型運算式來建立較大的運算式。

規則運算式的元件可以是個別字元、字元集、字元範圍或字元間的選擇, 也可以是這些元件的任何組合。

建構規則運算式

建構規則運算式的方式,是在一對分隔符號之間置入運算式的各種元件。 在 JScript 中,分隔符號是一對正斜線 (/) 字元,如下列範例所示。

/expression/

規則運算式的範例

下表包含一般規則運算式的範例。

規則運算式

描述

/^\s*$/

比對空白行。

/\d{2}-\d{5}/

比對由兩個數字、連字號及另外五個數字所組成的 ID 號碼。

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

比對 HTML 標籤。

一般字元

最簡單的規則運算式形式,就是與搜尋字串比較的單一、一般字元。 例如,單一字元規則運算式 A 會比對出現於搜尋字串任何位置的字母 A。

以下是 JScript 單一字元規則運算式的一些範例。

/a/
/7/
/M/

您可結合一些單一字元以形成較長的運算式。 例如,運算式 /the/ 會比對以下搜尋字串中的 "the":"the"、"there"、"other" 和 "over the lazy dog"。

不需要串連運算子, 只需將字元一個接著一個放在一起即可。

中繼字元

除了一般字元之外,規則運算式還可以包含「中繼字元」(Metacharacter)。 中繼字元的範例如 \d,會比對數字字元。

如需詳細資訊,請參閱規則運算式語法

一般字元是由未明確指定為中繼字元的所有可列印和不可列印字元所組成。 這包括所有大寫和小寫字母字元、所有數字、所有標點符號及某些符號。

比對任何字元

句號字元 (.) 會比對字串中的任何單一列印字元或非列印字元,但是新行字元 (\n) 除外。 /a.c/ 規則運算式會比對 "aac"、"abc"、"acc"、"adc"、"a1c"、"a2c"、"a-c" 和 "a#c"。

若要比對搜尋字串中包含的句號 (.),您可以在運算式中的句號前面加上反斜線 (\) 字元。 /filename\.ext/ 運算式會比對 "filename.ext"。

比對字元清單

您可以在方括號 ([ ]) 內置入一個或多個個別字元,建立比對字元清單。

放在方括號運算式內的任何字元只能在規則運算式中出現方括號運算式的位置上比對單一字元。 例如,/Chapter [12345]/ 運算式會比對 "Chapter 1"、"Chapter 2"、"Chapter 3"、"Chapter 4" 和 "Chapter 5"。

若要使用範圍來表達比對字元,而不是使用字元本身,您可以使用連字號 (-) 字元。 /Chapter [1-5]/ 運算式相當於 /Chapter [12345]/。

您可以在清單開頭加入插入號 (^) 字元,尋找不在清單或範圍內的所有字元。 例如,/[^aAeEiIoOuU]/ 運算式會比對任何非母音字元。

如需詳細資訊,請參閱比對字元清單

數量詞

您可以使用「數量詞」(Quantifier) 指定重複特定次數之單一字元或一組字元的規則運算式。

數量詞會參考緊鄰本身前面 (左邊) 的運算式。

數量詞要放在大括號 {} 之中,並包含表示出現次數下限及上限的數值。 例如,c{1,2} 會比對出現 1 個或連續 2 個字母 c 的情況。

僅指定一個數字時,除非後面接著逗號,否則這個數字會當做上限使用。 例如,c{3} 會比對恰好 3 個字母 c 的字元,而 c{5,} 則比對出現 5 個 (含) 以上字母 c 的情況。

此外,也有單一字元數量詞,如下表所示。

數量詞

明確數量詞

意義

*

{0,}

比對上一個項目零次或多次。

+

{1,}

比對上一個項目一次或多次。

?

{0,1}

比對上一個項目零次或一次。

以下是一些範例運算式以及這些運算式比對的搜尋字串。

規則運算式

數量詞的意義

符合項目

/Chapter [1-9][0-9]{0,}/ 或

/Chapter [1-9][0-9]*/

比對 [0-9] 零次或多次。

"Chapter 1"、"Chapter 25"、"Chapter 401320"

/Chapter [0-9]{1,2}/

比對 [0-9] 一次或多次。

"Chapter 0"、"Chapter 03"、"Chapter 1"、"Chapter 25"、"Chapter 40"

/Chapter [1-9][0-9]{0,1}/ 或

/Chapter [1-9][0-9]?/

比對 [0-9] 零次或一次。

"Chapter 1"、"Chapter 25"、"Chapter 40"

如需詳細資訊,請參閱 JScript 中的數量詞

行與字組的界限

「錨點」(Anchor) 可讓您指定規則運算式必須出現在搜尋字串的開頭還是結尾,或是出現在搜尋字串中一行或一個字組的開頭還是結尾,才算是比對。 如需詳細資訊,請參閱 錨點

指定替代項目

"|" 字元可以指定要比對兩個或多個替代項目。 例如,JScript 規則運算式 /(Chapter|Section) [1-9]/ 比對以下字串:"Chapter 1"、"Chapter 9" 和 "Section 2"。 如需詳細資訊,請參閱 替代和子運算式

使用子比對

在規則運算式中,子運算式是用括號來建立。 產生的子相符項目可由程式擷取。 如需詳細資訊,請參閱 替代和子運算式

您可以在規則運算式和取代字串內參考子運算式。 如需詳細資訊,請參閱 JScript 的反向參考

請參閱

概念

規則運算式程式設計

規則運算式語法