顶级
public dynamic class RegExp
继承RegExp Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

RegExp 类允许使用正则表达式(即可用于在字符串中执行搜索和替换文本的模式)。

可以使用 new RegExp() 构造函数或将 RegExp 文本分配给一个变量,从而创建新的 RegExp 对象:

 var pattern1:RegExp = new RegExp("test-\\d", "i");
     var pattern2:RegExp = /test-\d/i;
     

有关详细信息,请参阅《ActionScript 3.0 编程》中的“使用正则表达式”。

查看示例

另请参见

String.match()
String.replace()
String.search()
Regular expression syntax


公共属性
 属性定义方
 Inheritedconstructor : 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
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  source : String
[只读 (read-only)] 指定正则表达式的模式部分。
RegExp
公共方法
 方法定义方
  
RegExp(re:String, flags:String)
允许使用两个字符串来构造正则表达式。
RegExp
  
在给定的字符串 str 中执行正则表达式搜索。
RegExp
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
  
在给定的字符串 str 中测试正则表达式是否匹配。
RegExp
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
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

另请参见


示例
下面的示例说明构造同一正则表达式的不同方法。无论是哪种方法,正则表达式都需匹配 xxx-xxx-xxxx、(xxx) xxx-xxxx 或 (xxx)xxx-xxxx 电话号码模式。第二个正则表达式使用 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 — 正则表达式的模式(也称为构造函数字符串)。这是正则表达式的主要部分(“/”字符之间的部分)。

注意:

  • 不要包括首尾的“/”字符;这些字符仅用于不使用构造函数定义正则表达式文本的情况。例如,以下两个正则表达式是等效的:
     var re1:RegExp = new RegExp("bob", "i"); 
            var re2:RegExp = /bob/i;
  • 对于使用 RegExp() 构造函数方法定义的正则表达式,要使用以反斜杠 (\) 字符开头的元序列,例如 \d(匹配所有数字),请键入两个反斜杠字符。例如,以下两个正则表达式是等效的:
     var re1:RegExp = new RegExp("\\d+", ""); 
            var re2:RegExp = /\d/;

    在第一个表达式中,您必须键入两个反斜杠字符,因为 RegExp() 构造函数方法的第一个参数是一个字符串;而在字符串文本中,必须键入两个反斜杠字符才能识别为一个单独的反斜杠字符。

 
flags:String — 正则表达式的修饰符。其中包括:
  • g - 当使用 String 类的 replace() 方法时,指定此修饰符可替换所有匹配项,而不只替换第一个匹配项。 此修饰符对应于 RegExp 实例的 global 属性。
  • i - 计算正则表达式时 区分大小写。 此修饰符对应于 RegExp 实例的 ignoreCase 属性。
  • s - 点 (.) 字符与换行符相匹配。请注意,此修饰符对应于 RegExp 实例的 dotall 属性。
  • m - 尖号 (^) 字符和美元符号 ($) 在换行符之前 之后匹配。 此修饰符对应于 RegExp 实例的 multiline 属性。
  • x - 忽略 re 字符串中的空白字符,这样即可编写更加易读的构造函数。 此修饰符对应于 RegExp 实例的 extended 属性。

将忽略 flags 字符串中的所有其它字符。

另请参见

方法详细信息
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;否则,将返回具有以下属性的对象:
  • 一个数组,其中元素 0 包含完全匹配的子字符串,其它元素(1 到 n)包含与正则表达式中的括号组相匹配的子字符串
  • index - 匹配的子字符串在字符串中的字符位置
  • input - 字符串 (str)

另请参见


示例
如果 在正则表达式中设置 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
示例 如何使用示例
RegExpExample.as

下例说明如何以传入的字符串为依据,使用正则表达式来分析字符串并返回一个新的字符串或布尔值。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;
        }
    }
}