ActionScript3.0的正则表达式简单实用例程

本文介绍AS3中正则表达式的应用方法,包括基本语法、常见元字符及标志位,并通过实例演示如何利用RegExp类进行字符串匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

简介:

正则表达式(Regular Expression),AS3中用于字符串匹配的利器,常用的正则表达式类主要是RegExp

 

用法:

RegExp类有两种实例化的方法。

方法一:var samplePattern:RegExp = /sample/g;

方法二:var samplePattern:RegExp = new RegExp(“sample”,”g”);

 

详解:

RegExp的两种用法可以看出,正则表达式主要分成两个部分。

方法一中,双斜杠内是一部分,斜杠后是一部分。

方法二中,构造函数的第一个参数是一部分,第二个参数是一部分。

在这两种方法中,前半部分叫做匹配模式(Pattern),用来描述字符串特征;后半部分是正则表达式的标志位,由“gimsx”五个字母集组成,用于设定匹配的模式。

         举例如下:

         Var samplePattern:RegExp = /sample/g;

         Var testString:String = “this is a sample of regular expression. It is really simple”;

         Trace(testSting.match(samplePattern));                  //匹配第一个“sample”字符,输出:sample

 

      语法:

n  元字符:[]/^$.|?*+() 共十一个字符;

n  普通文字和字母:除元字符外地其他符号(Az09#=等等);

n  不可见字符:

1.         /cx匹配x指明的控制字符。如/cM匹配一个Ctrl-Mx只能是Az之一

2.         /f匹配一个换页符,相当于/x0c/cL

3.         /n匹配一个换行符,相当于/x0a/cJ

4.         /r匹配一个回车符,相当于/x0d/cM

5.         /t匹配一个制表符,相当于/x09/cI

6.         /v匹配一个垂直制表符,相当于/x09/cK

7.         /s匹配任何空白字符串,包括空格符、制表符等等,相当于[/f/n/r/t/v];

8.         /S匹配任何非空白字符,相当于[^/f/n/r/t/v]

        

      语法实例:

l  连字字符“[]:

         在正则表达式的元字符中,符号“[”和“]”基本上是成对出现的,在两者之间,我们可以定义需要进行匹配的字符集,如/g[eo]t/,匹配字符getgot(注意!并不匹配geot!)。

         其中,可以使用“-”来定义一个范围,如/g[a-z]t/,可以匹配gatgbtgct…..gzt。例如,匹配一个四位数的年份,可以写成/[0-2][0-9][0-9][0-9]/,这样就可以匹配00002999年的年份。

 

l  取反字符“^:

         /g[^0-9]t/表示匹配除了g0t,g1t,g2t…g9t之外的字符,如gAt,gzt等等。

 

l  特殊符号“.

         点号(.)在正则表达式中,表示一个模糊的关键字,相当于windows系统进行文件搜索时所用的星号“*”,倘若不知道文件的名字,只知道文件的后缀,可以输入:*.doc,然后进行搜索;那么在正则表达式中,如果不关心被匹配的字符是什么,则可以使用“.”来代替被匹配的字符。举例如下:

         var foo:RegExp = /g.t/sg;

         var targetStr:String = “g5t g/nt g/rt g-t gtt gst seet”;

         trace(targetStr.math(foo));

输出

         G5t,g

         T,g

         T,g-t,gtt,gst

 

l  选择符“|

         用来匹配多个正则表达式中的一个,如/see|saw/可匹配字符see或者saw

 

l  圆括号“()”

         圆括号的作用主要是用于将表达式括起来,作为独立的一部分。举一个简单的例子,例如正则表达式//ssee|saw/s/,匹配出来的是/ssee或者是saw/s,如果想匹配/ssee/s或者/ssaw/s,则需要将see|saw这部分独立出来,所以写成//s(see|saw)/s

 

l  花括号“{}

         花括号在正则表达式中主要是由于描述字符串的重复,括号内的数字表示重复的次数。例如:

/k{2}a/可匹配字符kka;

/k{1,}a/匹配至少重复1K,后面紧跟a的字符串(ka,kka,kkka

/k{1,2}a/匹配重复1或者2K,后面紧跟a的字符串(如ka,kka,不匹配kkka

 

除此之外,正则表达式还提供了一种方便描述一些常见的重复的方法,如:

         /wa*/相当于/wa{0,}/,可以匹配出现w紧跟0个或若干a的字符串,如w,wa,waaaa

         /wa+/相当于/wa{1,}/,可以匹配出现w紧跟至少1a的字符串,如wa,waa,waaaa

         /wa?/相当于/wa{0,1}/,可以匹配出现w紧跟0个或1a的字符串,如w,wa

 

l  用于定位的特殊字符

1.         ^匹配输入字符串的开始位置。如果设置了正则表达式的m标志位,^也匹配“/n”“/r”之后的位置

2.         $匹配输入字符串的开始位置。如果设置了正则表达式的m标志位,$也匹配“/n”“/r”之后的位置

3.         /b匹配一个单词边界,也就是指单词和空格间的位置

4.         /B匹配非单词边界

                  举例如下:

                            var test:String = "xTorodox";

                            trace(test.match(//bTor/));              //输出null

                            trace(test.match(/do/b/));                //输出null

                            test = "Torodox";

                            trace(test.match(//bTor/));              //匹配成功,输出Tor

                            test = "xTorodo";

                            trace(test.match(/do/b/));                //匹配成功,输出do

                            trace(test.match(/ro/B/));                //匹配成功,输出ro

                            test = "Toxor";

                            trace(test.match(/ro/B/));                //输出null

 

l  5个标志位

         g – global 匹配多个

         i – ingnoreCase 忽略大小写,不能用于扩展字符

         m – multiline 设置这个标志位后,^$可以匹配行的开头和结尾

         s – dotall 设置此标志位后“.”可以匹配/n

         x – extended 支持扩展的正则表达式。允许在正则表达式中键入空格,空格将被当作模式的一部分被忽略

 

l  AS3RegExp类的exec()test()

Test()检查目标字符串是否包含正则表达式的匹配内容,如果包含则返回true,否则返回false

Exec()也可以用于检测目标字符串,但是它返回的是ObjectObject内包括匹配的字符串、同正则表达式中的任意括号组匹配的子字符串,其次这个数组还有index属性。

举例如下:

var myPattern:RegExp = //bt([a-z])+/b/;

                            var str:String = "Ok, the theory is not good";

                            var result:Object = myPattern.exec(str);

                            trace(result);

                            trace(result.index);

                            trace(myPattern.test(str));

输出:

the,e

4

True

 

String类中与正则表达式相关的方法search()match()

Search()返回与模式匹配的第一个字符串的索引位置。

Match()返回包含匹配字符串的数组。

举例如下:

var myPattern:RegExp = //bt([a-z])+/b/g;

                            var str:String = "Ok, the theory is not good";

                            var result:Object = myPattern.exec(str);

                            trace(str.search(myPattern));

                            trace(str.match(myPattern));

                            trace(str.replace(myPattern,"this"));

输出:

4

the,e

Ok, this theory is not good

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值