| 包 | 顶级 |
| 类 | public dynamic class RegExp |
| 继承 | RegExp Object |
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
可以使用 new RegExp() 构造函数或将 RegExp 文本分配给一个变量,从而创建新的 RegExp 对象:
var pattern1:RegExp = new RegExp("test-\\d", "i");
var pattern2:RegExp = /test-\d/i;
有关详细信息,请参阅《ActionScript 3.0 编程》中的“使用正则表达式”。
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| dotall : Boolean [只读 (read-only)]
指定正则表达式模式中的点字符 (.) 是否与换行符相匹配。 | RegExp | ||
| extended : Boolean [只读 (read-only)]
指定是否为正则表达式使用扩展模式。 | RegExp | ||
| global : Boolean [只读 (read-only)]
指定是否为正则表达式使用全局匹配。 | RegExp | ||
| ignoreCase : Boolean [只读 (read-only)]
指定正则表达式是否忽略大小写。 | RegExp | ||
| lastIndex : Number
指定字符串中开始进行下一次搜索的索引位置。 | RegExp | ||
| multiline : Boolean [只读 (read-only)]
指定是否设置了 m(多行)标志。 | RegExp | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| source : String [只读 (read-only)]
指定正则表达式的模式部分。 | RegExp | ||
| 方法 | 定义方 | ||
|---|---|---|---|
允许使用两个字符串来构造正则表达式。 | RegExp | ||
在给定的字符串 str 中执行正则表达式搜索。 | RegExp | ||
![]() |
指示对象是否已经定义了指定的属性。 | Object | |
![]() |
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
指示指定的属性是否存在、是否可枚举。 | Object | |
![]() |
设置循环操作动态属性的可用性。 | Object | |
在给定的字符串 str 中测试正则表达式是否匹配。 | RegExp | ||
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
| dotall | 属性 |
dotall:Boolean [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定正则表达式模式中的点字符 (.) 是否与换行符相匹配。构造正则表达式时使用 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 [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定是否为正则表达式使用扩展模式。如果 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 [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定是否为正则表达式使用全局匹配。如果 global == true,找到一个匹配项后将设置 lastIndex 属性。下次请求查找匹配项时,此正则表达式引擎将从字符串中的 lastIndex 位置开始查找。构造正则表达式时,使用 g 标志将 global 设置为 true。
public function get global():Boolean另请参见
exec() 方法中设置 g (global) 标志的影响:
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 [只读 (read-only)] | 语言版本: | 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 |
指定字符串中开始进行下一次搜索的索引位置。此属性影响 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 属性的影响,还说明对正则表达式调用 exec() 方法后如何更新该属性(其中正则表达式中设置了 g (global) 标志):
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 [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定是否设置了 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 [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定正则表达式的模式部分。
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 |
在给定的字符串 str 中执行正则表达式搜索。
如果没有 为正则表达式设置 g (global) 标志,则从字符串的开头位置(索引位置 0)开始搜索;搜索将忽略正则表达式的 lastIndex 属性。
如果为正则表达式设置 了 g (global) 标志,将从正则表达式的 lastIndex 属性指定的索引位置开始搜索。如果搜索与子字符串相匹配,lastIndex 属性将发生更改以与该匹配项的末尾位置相匹配。
参数
str:String — 要搜索的字符串。
|
Object — 如果没有匹配项,则返回 null;否则,将返回具有以下属性的对象:
|
另请参见
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 |
在给定的字符串 str 中测试正则表达式是否匹配。
如果没有 为正则表达式设置 g (global) 标志,则从字符串的开头位置(索引位置 0)开始搜索;搜索将忽略正则表达式的 lastIndex 属性。
如果为正则表达式设置 了 g (global) 标志,将从正则表达式的 lastIndex 属性指定的索引位置开始搜索。如果搜索与子字符串相匹配,lastIndex 属性将发生更改以与该匹配项的末尾位置相匹配。
参数
str:String — 要测试的字符串。
|
Boolean — 如果有匹配项,则为 true;否则为 false。
|
另请参见
test() 方法的用法,在该正则表达式中设置了 g (global) 标志:
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() 方法只是简单地将单词 Hello 替换为 Hi,而不管大小写。它还会去除字符串中姓名的姓(假设姓名符合指定的模式)。validateEmail() 和 validatePhoneNumber() 方法将检查所传递字符串的模式是否与有效的电子邮件地址或特定的电话号码模式相匹配,并根据结果返回布尔值。
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;
}
}
}