| 套件 | 最上層 |
| 類別 | 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
隱藏繼承公用屬性
顯示繼承公用屬性