套件 | 最上層 |
類別 | public dynamic class RegExp |
繼承 | RegExp Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
您可以使用 new RegExp()
建構函式或將 RegExp 常值指定給變數,以建立新的 RegExp 物件:
var pattern1:RegExp = new RegExp("test-\\d", "i"); var pattern2:RegExp = /test-\d/i;
如需詳細資訊,請參閱「ActionScript 3.0 開發人員指南」中的「使用規則運算式」。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
dotall : Boolean [唯讀]
指定規則運算式樣式中的點字元 (.) 是否符合換行字元。 | RegExp | ||
extended : Boolean [唯讀]
會指定是否針對規則運算式使用延伸模式。 | RegExp | ||
global : Boolean [唯讀]
會指定是否對規則運算式使用全域模式。 | RegExp | ||
ignoreCase : Boolean [唯讀]
會指定規則運算式是否忽略大小寫。 | RegExp | ||
lastIndex : Number
會指定字串中開始下一次搜尋的索引位置。 | RegExp | ||
multiline : Boolean [唯讀]
指定是否已設定 m (multiline) 旗標。 | RegExp | ||
source : String [唯讀]
會指定規則運算式的樣式部分。 | RegExp |
方法 | 定義自 | ||
---|---|---|---|
可讓您透過兩個字串建構規則運算式。 | RegExp | ||
針對指定字串 str 執行規則運算式的搜尋作業。 | RegExp | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
會測試指定字串 str 中,規則運算式的相符項目。 | RegExp | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object |
dotall | 屬性 |
dotall:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定規則運算式樣式中的點字元 (.) 是否符合換行字元。 請在建構規則運算式時使用 s
旗標,以設定 dotall = true
。
實作
public function get dotall():Boolean
範例 ( 如何使用本範例 )
s
( dotall
) 旗標對於規則運算式的影響:
var str:String = "<p>Hello\n" + "again</p>" + "<p>Hello</p>"; var pattern:RegExp = /<p>.*?<\/p>/; trace(pattern.dotall) // false trace(pattern.exec(str)); // <p>Hello</p> pattern = /<p>.*?<\/p>/s; trace(pattern.dotall) // true trace(pattern.exec(str));
extended | 屬性 |
extended:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會指定是否針對規則運算式使用延伸模式。 當 RegExp 物件處於延伸模式時,便會忽略建構函式中的空白字元。 這樣做是為了讓建構函式更易於閱讀。
請在建構規則運算式時使用 x
旗標,以設定 extended = true
。
實作
public function get extended():Boolean
範例 ( 如何使用本範例 )
x
旗標,如此會忽略字串中的空白字元。
var rePhonePattern1:RegExp = /\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}/; var str:String = "The phone number is (415)555-1212."; trace(rePhonePattern1.extended) // false trace(rePhonePattern1.exec(str)); // (415)555-1212 var rePhonePattern2:RegExp = / \d{3}-\d{3}-\d{4} | \( \d{3} \) \ ? \d{3}-\d{4} /x; trace(rePhonePattern2.extended) // true trace(rePhonePattern2.exec(str)); // (415)555-1212
global | 屬性 |
global:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會指定是否對規則運算式使用全域模式。 當為 global == true
時,便會在找到相符項目後設定 lastIndex
屬性。 在下一次要求相符項目時,規則運算式引擎則會從字串中的 lastIndex
位置開始。 請在建構規則運算式時使用 g
旗標,以便將 global
設定為 true
。
實作
public function get global():Boolean
範例 ( 如何使用本範例 )
g
( global
) 旗標對於 exec()
方法的影響:
var pattern:RegExp = /foo\d/; var str:String = "foo1 foo2"; trace(pattern.global); // false trace(pattern.exec(str)); // foo1 trace(pattern.lastIndex); // 0 trace(pattern.exec(str)); // foo1 pattern = /foo\d/g; trace(pattern.global); // true trace(pattern.exec(str)); // foo1 trace(pattern.lastIndex); // 4 trace(pattern.exec(str)); // foo2
ignoreCase | 屬性 |
ignoreCase:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
會指定規則運算式是否忽略大小寫。 請在建構規則運算式時使用 i
旗標,以設定 ignoreCase = true
。
實作
public function get ignoreCase():Boolean
範例 ( 如何使用本範例 )
i
( ignoreCase
) 旗標的影響:
var pattern:RegExp = /bob/; var str:String = "Bob bob"; trace(pattern.ignoreCase); // false trace(pattern.exec(str)); // bob pattern = /bob/i; trace(pattern.ignoreCase); // true trace(pattern.exec(str)); // Bob
lastIndex | 屬性 |
lastIndex:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會指定字串中開始下一次搜尋的索引位置。 這個屬性會影響 RegExp 類別的 exec()
與 test()
方法。 不過,String 類別的 match()
、replace()
及 search()
方法會呼略 lastIndex
屬性,並從字串的開頭開始進行所有搜尋。
當 exec()
或 test()
方法找到相符項目,而且規則運算式的 g
(global
) 旗標設定為 true
時,該方法便會自動將 lastIndex
屬性設定為最後相符項目的相符子字串中,最後一個字元「後」之字元的索引位置。 如果 g
(global
) 旗標設定為 false
,該方法便不會設定 lastIndex
屬性。
您可以設定 lastIndex
屬性,調整規則運算式之相符字串中的開始位置。
實作
public function get lastIndex():Number
public function set lastIndex(value:Number):void
範例 ( 如何使用本範例 )
lastIndex
屬性的影響,而且會示範如何在有設定 g
( global
) 旗標之規則運算式中呼叫 exec()
方法之後來更新這個屬性:
var pattern:RegExp = /\w\d/g; var str:String = "a1 b2 c3 d4"; pattern.lastIndex = 2; trace(pattern.exec(str)); // b2 trace(pattern.lastIndex); // 5 trace(pattern.exec(str)); // c3 trace(pattern.lastIndex); // 8 trace(pattern.exec(str)); // d4 trace(pattern.lastIndex); // 11 trace(pattern.exec(str)); // null
multiline | 屬性 |
multiline:Boolean
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會指定是否設定 m
(multiline
) 旗標。 如果有設定此旗標,規則運算式中的跳脫字元 (^
) 與貨幣符號 ($
) 便會在換行字元的前後相符。 請在建構規則運算式時使用 m
旗標,以設定 multiline = true
。
實作
public function get multiline():Boolean
範例 ( 如何使用本範例 )
m
( multiline
) 旗標的影響:
var pattern:RegExp = /^bob/; var str:String = "foo\n" + "bob"; trace(pattern.multiline); // false trace(pattern.exec(str)); // null pattern = /^bob/m; trace(pattern.multiline); // true trace(pattern.exec(str)); // bob
source | 屬性 |
source:String
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會指定規則運算式的樣式部分。
實作
public function get source():String
範例 ( 如何使用本範例 )
source
參數:
var re1:RegExp = /aabb/gi; trace (re1.source); // aabb var re2:RegExp = new RegExp("x+y*", "i"); trace(re2.source); // x+y*
RegExp | () | 建構函式 |
public function RegExp(re:String, flags:String)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
可讓您透過兩個字串建構規則運算式。 其中一個字串會定義規則運算式的樣式,另一個字串則會定義規則運算式中使用的旗標。
參數re:String — 規則運算式的樣式 (又稱為「建構函式字串」)。 這是規則運算式的主要部分 (伴隨在 "/" 字元內的部分)。
注意:
| |
flags:String — 規則運算式的修飾詞, 可以包括下列各項:
|
exec | () | 方法 |
AS3 function exec(str:String):Object
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在指定字串 str
執行規則運算式的搜尋。
如果 g
(global
) 旗標「沒有」針對規則運算式進行設定,便會從字串的開頭 (在索引位置 0) 開始搜尋,而且會忽略規則運算式的 lastIndex
屬性。
如果 g
(global
) 旗標「有」針對規則運算式設定,便會從規則運算式之 lastIndex
屬性所指定的索引位置開始搜尋。 如果搜尋與子字串相符,lastIndex
屬性便會變更,以符合相符項目的結尾位置。
參數
str:String — 要搜尋的字串。
|
Object — 如果沒有相符項目,則會是 null ,否則便會是具有下列屬性的物件:
|
相關 API 元素
範例 ( 如何使用本範例 )
g
(global
) 旗標時,您可以使用 exec()
尋找字串中的第一個相符項目:
var myPattern:RegExp = /(\w*)sh(\w*)/ig; var str:String = "She sells seashells by the seashore"; var result:Object = myPattern.exec(str); trace(result);
result
物件會設定如下:
-
result[0]
會設定為"She"
(完全相符)。 -
result[1]
會設定為空字串 (第一個相符的括號群組)。 -
result[2]
會設定為"e"
(第二個相符的括號群組)。 -
result.index
會設定為 0。 -
result.input
會設定為輸入字串:"She sells seashells by the seashore"
。
在下列範例中,「會在」規則運算式中設定 g
(global
) 旗標,如此您便能重複使用 exec()
尋找多個相符項目:
var myPattern:RegExp = /(\w*)sh(\w*)/ig; var str:String = "She sells seashells by the seashore"; var result:Object = myPattern.exec(str); while (result != null) { trace ( result.index, "\t", result); result = myPattern.exec(str); }
此程式碼會產生下列輸出:
0 She,,e
10 seashells,sea,ells
27 seashore,sea,ore
test | () | 方法 |
AS3 function test(str:String):Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會測試指定字串 str
中,規則運算式的相符情形。
如果 g
(global
) 旗標「沒有」針對規則運算式進行設定,便會從字串的開頭 (在索引位置 0) 開始搜尋,而且會忽略規則運算式的 lastIndex
屬性。
如果 g
(global
) 旗標「有」針對規則運算式設定,便會從規則運算式之 lastIndex
屬性所指定的索引位置開始搜尋。 如果搜尋與子字串相符,lastIndex
屬性便會變更,以符合相符項目的結尾位置。
參數
str:String — 要測試的字串。
|
Boolean — 如果有相符項目存在,則為 true ,否則為 false 。
|
範例 ( 如何使用本範例 )
g
( global
) 旗標的規則運算式中使用 test()
方法:
var re1:RegExp = /\w/g; var str:String = "a b c"; trace (re1.lastIndex); // 0 trace (re1.test(str)); // true trace (re1.lastIndex); // 1 trace (re1.test(str)); // true trace (re1.lastIndex); // 3 trace (re1.test(str)); // true trace (re1.lastIndex); // 5 trace (re1.test(str)); // false
informalizeGreeting()
方法就會以 Hi
取代 Hello
這個字,而不管大小寫。 它也會去除字串中名稱的姓氏 (假設名稱與指定的樣式相符)。 在 validateEmail()
和 validatePhoneNumber()
方法中,會檢查傳遞的字串,以瞭解它的樣式是否符合有效的電子郵件地址或特定電話號碼樣式,而且這兩個方法會根據結果來傳回 Boolean 值。
package { import flash.display.Sprite; public class RegExpExample extends Sprite { public function RegExpExample() { var formalGreeting:String = "Hello, John Smith."; trace(informalizeGreeting(formalGreeting)); // Hi, John. var validEmail:String = "name@domain.com"; trace(validateEmail(validEmail)); // true var invalidEmail:String = "foo"; trace(validateEmail(invalidEmail)); // false var validPhoneNumber:String = "415-555-1212"; trace(validatePhoneNumber(validPhoneNumber)); // true var invalidPhoneNumber:String = "312-867-530999"; trace(validatePhoneNumber(invalidPhoneNumber)); // false } private function informalizeGreeting(str:String):String { var pattern:RegExp = new RegExp("hello, (\\w+) \\w+", "i"); return str.replace(pattern, "Hi, $1"); } private function validateEmail(str:String):Boolean { var pattern:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/; var result:Object = pattern.exec(str); if(result == null) { return false; } return true; } private function validatePhoneNumber(str:String):Boolean { var pattern:RegExp = /^\d{3}-\d{3}-\d{4}$/; var result:Object = pattern.exec(str); if(result == null) { return false; } return true; } } }
Tue Jun 12 2018, 03:47 PM Z