AS3中的正则表达式
AS3中的正则表达式
一、定义方式,可以有两种
var pattern1:RegExp = new RegExp("test-\\d","i");
var pattern2:RegExp =
/test-\d/i;
1)使用new来新建一个RegExp对象,其中参数为1)表达式字符串2)表达式的参数,这种方式如果要用\,一定要用\\来转义。
2)直接采用/形式,以把表达式的内容写到/……./里面,在后面跟上表达式的参数,参数字符可以同时添加多个,例如:/………/gi
二、参数介绍
1)Dotall属性,用s字符表示参数,指定字符(.)在表达式里是不是匹配新行,如果使用了s参数,那就表示dotall表示真
例:
var str:String =
"<p>Hello\n"
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));
2)Extended属性,用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}|
trace(rePhonePattern2.extended) //
true
trace(rePhonePattern2.exec(str)); // (415)555-1212
3)global属性,用g参数表示,指是否用表达式在匹配以后在下次匹配的时候是从头再来还是从上次匹配过的地方开始,其lastIndex属性会保存起来。
例:
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
4)ignoreCase属性,用i参数表示,指表达式匹配的时候是否区别大小写。
例:
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
5)lastIndex属性,指定下次查询的起始位置,这个属性影响两个方法exec()和test(),match(),replace(),search()方法是忽略这个属性的,他们总是从头开始的。
这个属性要和global结合使用,当global为true时,执行exec()和test()后,lastIndex属性会被设置为下一个字符,如果是false,则会从头开始。
例:
6)multiline属性,用m参数表示,指表达式匹配的时候用字符(^)和($)分别表示在之前或之后有新的一行。
例:
var pattern:RegExp = /^bob/;
var str:String =
"foo\n"
trace(pattern.multiline); // false
trace(pattern.exec(str)); //
null
pattern = /^bob/m;
trace(pattern.multiline); //
true
trace(pattern.exec(str)); // bob
7)source属性,返回表达式的定义字符串。
例:
var re1:RegExp = /aabb/gi;
trace (re1.source); // aabb
var re2:RegExp =
new RegExp("x+y*", "i");
trace(re2.source); // x+y*
三、方法介绍
例:
var myPattern:RegExp
=/(\w*)sh(\w*)/ig;
输出:
result[0]是”she”
result[1]是一个空串(第一个\w是匹配到空的子串)
result[2]是”e”
result.index是0
result.input是”
She sells seashells by the seashore”
设置了g(global)属性的例子:
var myPattern:RegExp =
/(\w*)sh(\w*)/ig;
例:
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
四、综合例子:
package {