數量詞
Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本
使用數量詞來指定字元或序列在模式中的重複情形,如下所示:
數量詞中繼字元
|
說明
|
*
(星號)
|
比對之前重複零次或多次的項目。
|
+
(加號)
|
比對之前重複一或多次的項目。
|
?
(問號)
|
比對之前重複零次或一次的項目。
|
{
n
}
{
n
,}
和
{
n
,
n
}
|
指定前述項目的數值數量詞或數量詞範圍:
/A{27}/
比對字元 A 重複 27 次。
/A{3,}/
比對字元 A 重複 3 次或 3 次以上。
/A{3,5}/
比對字元 A 重複 3 到 5 次。
|
您可以將數量詞套用至單一字元、字元類別或群組上:
您可以在已經套用數量詞的括號群組之中使用數量詞。例如,下列數量詞會比對
word
和
word-word-word
等字串:
/\w+(-\w+)*/
根據預設,規則運算式所執行的比對,稱為「貪婪比對」。規則運算式中的任何子模式 (例如
.*
) 都會在移動至規則運算式下個部分之前,儘可能比對字串中的字元。例如,以下列規則運算式和字串為例:
var pattern:RegExp = /<p>.*<\/p>/;
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";
規則運算式比對整個字串:
<p>Paragraph 1</p> <p>Paragraph 2</p>
但是,假設您只要比對一個
<p>...</p>
群組。您可以藉由下列方式執行這項作業:
<p>Paragraph 1</p>
在任何數量詞後面加上問號 (
?
),將它變更為所謂的「緩式數量詞」。例如,下列使用緩式
*?
數量詞的規則運算式,會比對
<p>
後面接著最少可能的字元數 (緩式),再接著
</p>
:
/<p>.*?<\/p>/
請記住下列與數量詞有關的幾個重點:
-
數量詞
{0}
和
{0,0}
不會從相符項目中排除項目。
-
請不要結合使用多個數量詞,如
/abc+*/
所示。
-
點 (.) 不會合併行,除非設定
s
(
dotall
) 旗標,即使它後面跟著
*
數量詞,也不會合併。例如,以下列程式碼為例:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*<\/p>/;
trace(str.match(re)); // null;
re = /<p>.*<\/p>/s;
trace(str.match(re));
// output: <p>Test
// Multiline</p>
如需詳細資訊,請參閱
旗標和屬性
。
|
|
|