包 | 顶级 |
类 | 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(多行)标志。 | 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
示例 ( 如何使用本示例 )
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
[只读] 语言版本: | 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
属性的影响,还说明对正则表达式调用 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
[只读] 语言版本: | 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 。
|
示例 ( 如何使用本示例 )
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; } } }
Tue Jun 12 2018, 11:04 AM Z