有兩個方法可以建立規則運算式實體。其中一個方法是使用正斜線字元 (
/
) 來區隔規則運算式,另一個方法則是使用
new
建構函式。例如,下列規則運算式是相等的:
var pattern1:RegExp = /bob/i;
var pattern2:RegExp = new RegExp("bob", "i");
正斜線區隔規則運算式常值的方式與引號區隔字串常值的方式相同。規則運算式在正斜線內的部分定義了「模式」。規則運算式在最後的區隔斜線之後,也能包含「旗標」。這些旗標被視為規則運算式的一部分,但是與其模式分隔開來。
當您使用
new
建構函式時,要使用兩個字串來定義規則運算式。第一個字串定義模式,第二個字串則定義旗標,如下列範例所示:
var pattern2:RegExp = new RegExp("bob", "i");
當您將正斜線納入以正斜線分隔符號定義的規則運算式「之中」時,必須在正斜線之前加上反斜線 (
\
) 跳脫字元。例如,下列規則運算式比對模式
1/2
:
var pattern:RegExp = /1\/2/;
若要將引號納入以
new
建構函式定義的規則運算式「之中」,您必須在引號前加上反斜線 (
\
) 跳脫字元 (如同您在定義任何 String 常值一樣)。例如,下列規則運算式比對
eat at "joe's"
的模式:
var pattern1:RegExp = new RegExp("eat at \"joe's\"", "");
var pattern2:RegExp = new RegExp('eat at "joe\'s"', "");
請不要在以正斜線分隔符號定義的規則運算式中,同時使用反斜線跳脫字元和引號。同樣的,也請不要在以
new
建構函式定義的規則運算式中,同時使用跳脫字元和正斜線。下列規則運算式是柤等的,都是定義
1/2 "joe's"
模式:
var pattern1:RegExp = /1\/2 "joe's"/;
var pattern2:RegExp = new RegExp("1/2 \"joe's\"", "");
var pattern3:RegExp = new RegExp('1/2 "joe\'s"', '');
另外,在以
new
建構函式定義的規則運算式中,若要使用以反斜線 (
\
) 字元開頭的中繼序列,如
\d
(比對任何數字),請輸入反斜線字元兩次:
var pattern:RegExp = new RegExp("\\d+", ""); // matches one or more digits
在這種情況下,您必須輸入反斜線字元兩次,因為
RegExp()
建構函式方法的第一個參數是字串,而在字串常值中,您必須輸入反斜線字元兩次,才能將其辨識為單一反斜線字元。
本節以下部分將說明規則運算式模式的定義語法。
如需有關旗標的詳細資訊,請參閱
旗標和屬性
。