这篇文章给大家分享的是有关AS3中Flex正则表达式怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
AS3中的Flex正则表达式
一、定义方式,可以有两种
varpattern1:RegExp=newRegExp("test-\\d","i");
varpattern2:RegExp=/test-\d/i;
1)使用new来新建一个RegExp对象,其中参数为1)表达式字符串2)表达式的参数,这种方式如果要用\,一定要用\\来转义。
2)直接采用/形式,以把表达式的内容写到/……./里面,在后面跟上表达式的参数,参数字符可以同时添加多个,例如:/………/gi
二、Flex正则表达式参数介绍
1)Dotall属性,用s字符表示参数,指定字符(.)在表达式里是不是匹配新行,如果使用了s参数,那就表示dotall表示真
例:
varstr:String="<p>Hello\n" +"again</p>" +"<p>Hello</p>"; varpattern: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参数表示,指是否在表达式定义的时候是否忽略空格
例:
varrePhonePattern1:RegExp=/\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}/; varstr:String="Thephonenumberis(415)555-1212."; trace(rePhonePattern1.extended)//false trace(rePhonePattern1.exec(str));//(415)555-1212 varrePhonePattern2:RegExp=/\d{3}-\d{3}-\d{4}|\(\d{3}\)\?\d{3}-\d{4}/x; trace(rePhonePattern2.extended)//true trace(rePhonePattern2.exec(str));//
(415)555-12123)global属性,用g参数表示,指是否用表达式在匹配以后在下次匹配的时候是从头再来还是从上次匹配过的地方开始,其lastIndex属性会保存起来。
例:
varpattern:RegExp=/foo\d/; varstr:String="foo1foo2"; 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参数表示,指表达式匹配的时候是否区别大小写。
例:
varpattern:RegExp=/bob/; varstr:String="Bobbob"; 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参数表示,指表达式匹配的时候用字符(^)和($)分别表示在之前或之后有新的一行。
例:
varpattern:RegExp=/^bob/; varstr: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
7)source属性,返回表达式的定义字符串。
例:
varre1:RegExp=/aabb/gi; trace(re1.source);//aabb varre2:RegExp=newRegExp("x+y*","i"); trace(re2.source);//x+y*
三、Flex正则表达式方法介绍
1)Exec()方法:
i.输入:传入一个String类型的参数,表示要查询的字符串。
ii.返回:如果没有匹配到就返回null,否则返回一个Object对象。
这个Object对象的属性:
a)一个Array(数组),元素0包含一个匹配得到的子串,1到n包含,其中定义的组所匹配的字符子串
b)Index匹配子串在字符串里的位置
c)Input输入的原始字符串。
例:
varmyPattern:RegExp=/(\w*)sh(\w*)/ig; varstr:String="Shesellsseashellsbytheseashore"; varresult:Object=myPattern.exec(str); trace(result);
输出:
result[0]是”she”
result[1]是一个空串(***个\w是匹配到空的子串)
result[2]是”e”
result.index是0
result.input是”Shesellsseashellsbytheseashore”
设置了g(global)属性的例子:
varmyPattern:RegExp=/(\w*)sh(\w*)/ig; varstr:String="Shesellsseashellsbytheseashore"; varresult:Object=myPattern.exec(str); while(result!=null){ trace(result.index,"\t",result); result=myPattern.exec(str); }
输出:
0She,,e
10seashells,sea,ells
27seashore,sea,ore
2)Test()方法:
i.输入:传入一个String类型的参数,表示要查询的字符串。
ii.返回:如果匹配返回true,否则返回false.
例:
varmyPattern:RegExp=/(\w*)sh(\w*)/ig; varstr:String="Shesellsseashellsbytheseashore"; varresult:Object=myPattern.exec(str); trace(result);
感谢各位的阅读!关于“AS3中Flex正则表达式怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!