字元、中繼字元與中繼序列

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

最簡單的規則運算式是比對字元序列的規則運算式,如下列範例所示:

var pattern:RegExp = /hello/;

然而,下列稱為中繼字元的字元,在規則運算式中具有特殊意義:

^ $ \ . * + ? ( ) [ ] { } |

例如,下列規則運算式比對字母 A 後面跟著零或更多的字母 B (星號中繼字元表示此種重複現象),後面再跟著字母 C:

/AB*C/

若要在規則運算式的模式中納入中繼字元並排除其特殊意義,必須使用反斜線 ( \ ) 跳脫字元。例如,下列規則運算式依序比對字母 A、字母 B、星號及字母 C:

var pattern:RegExp = /AB\*C/;

「中繼序列」和中繼字元一樣,在規則運算式中都具有特殊意義。中繼序列是由一個以上的字元所組成。下列章節內容提供使用中繼字元和中繼序列的詳細資訊。

關於中繼字元

下表摘要說明可用於規則運算式的中繼字元:

中繼字元

說明

^ (跳脫字元)

比對字串的開頭。設定好 m ( multiline ) 旗標,跳脫字元也會比對行開頭 (請參閱 旗標和屬性 )。請注意,跳脫字元用於字元類別開頭時,所代表的是負值,而非字串開頭。如需詳細資訊,請參閱 字元類別

$ (貨幣符號)

比對字串結尾。設定好 m ( multiline ) 旗標之後, $ 也會比對新行 ( \n ) 字元之前的位置。如需詳細資訊,請參閱 旗標和屬性

\ (反斜線)

跳脫特殊字元的特殊中繼字元意義。

另外,若要在規則運算式常值中使用正斜線字元,請同時使用反斜線字元,如 /1\/2/ 中所示 (以比對字元 1,後面依序跟著正斜線字元與字元 2)。

. (點)

比對任何單一字元。

只有在設定 s ( dotall ) 旗標之後,點才會比對新行字元 ( \n )。如需詳細資訊,請參閱 旗標和屬性

* (星號)

比對之前重複零次或多次的項目。

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

+ (加號)

比對之前重複一或多次的項目。

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

? (問號)

比對之前重複零次或一次的項目。

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

( )

定義規則運算式中的群組。將群組用於下列用途:

  • 限制 | 替代字元的範圍: /(a|b|c)d/

  • 定義數量詞的範圍: /(walla.){1,2}/

  • 用於後參考中。例如,下列規則運算式中的 \1 ,比對與模式第一個括號群組相符的任何項目:

  • /(\w*) 重複:\1/

如需詳細資訊,請參閱 群組

[ ]

定義字元類別,此字元類別定義單一字元可能的相符項目:

/[aeiou]/ 比對任一指定字元。

在字元類別中,使用連字符號 ( - ) 來指定字元範圍:

/[A-Z0-9]/ 比對大寫字元 A 到 Z 或 0 到 9。

在字元類別中,插入反斜線以跳脫 ] 和

- 字元:

/[+\-]\d+/ 比對在一或多個數字之前的 + -

在字元類別中,其它字元 (通常是中繼字元) 會被視為一般字元 (非中繼字元),因此無須加上反斜線:

/[$]/ £ 比對 $ £。

如需詳細資訊,請參閱 字元類別

| (管道)

做為替代,以比對左側部分或右側部分:

/abc|xyz/ 比對 abc xyz

關於中繼序列

中繼序列是在規則運算式模式中具有特殊意義的字元序列。下表說明這些中繼序列:

中繼序列

說明

{ n }

{ n ,}

{ n , n }

指定前述項目的數值數量詞或數量詞範圍:

/A{27}/ 比對字元 A 重複 27 次。

/A{3,}/ 比對字元 A 重複 3 次或 3 次以上。

/A{3,5}/ 比對字元 A 重複 3 5 次。

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

\b

比對文字字元和非文字字元之間的位置。如果字串中第一個或最後一個字元是文字字元,那麼也比對字串的開頭或結尾。

\B

比對兩個文字字元之間的位置。也比對兩個非文字字元之間的位置。

\d

比對十進位數字。

\D

比對數字以外的任何字元。

\f

比對換頁字元。

\n

比對新行字元。

\r

比對歸位字元。

\s

比對任何空白字元 (空格、定位點、新行或歸位字元)。

\S

比對空白字元以外的任何字元。

\t

比對定位點字元。

\u nnnn

比對 Unicode 字元,其字元代碼是以十六進位數字 nnnn 指定。例如, \u263a 是笑臉字元。

\v

比對垂直換頁字元。

\w

比對文字字元 ( AZ –、 az –、 0-9 _ )。請注意, \w 不比對非英文字元,例如 é ñ ç

\W

比對文字字元以外的任何字元。

\\x nn

比對帶有指定的 ASCII 值的字元,以十六進位數字 nn 定義。