1.新建正则表达式,有两种方式
var exp1:RegExp = new RegExp("ABCD","g");
var exp2 = /ABCD/g;//g global 表示全局匹配

trace("ABCDEFABCD".match(exp1)); 
trace("ABCDEFABCD".match(exp2));//输出ABCD,ABCD,其中,字条串.match(表达式),返回一个匹配到的数组

2.元字符
 
1)"." 表示匹配任意单个字符(如:1,e,中,*等),可以是数字,字母,汉字,标点等特殊字符
如:
   trace("this is a good Boo*".match(/.oo./g));//返回good,Boo*
但是如果匹配的正则子串本身要包含"."的话,就要用转义,如:
   trace("this is a good Boo.".match(/.oo\./g));//返回Boo.

2)"^" 表示匹配字符串的起始处
   (1) trace("ABAFT\nABALYN\nABOUT".replace(/^AB/g,'中国'));//把字符串起始处的"AB"替换为"中国"     返

回: 
    中国AFT\nABALYN\nABOUT
   输入后变成:
    中国AFT
    ABALYN
    ABOUT

在多行匹配中,匹配方式指定为m时,从每个\n后开始匹配

(2) trace("ABAFT\nABALYN\nABOUT".replace(/^AB/gm,'中国'));//m multiline表示多行的意思,即多行匹配 
   返回:
    中国AFT\n中国ALYN\n中国OUT
   输入后变成:
    中国AFT
    中国ALYN
    中国OUT

注意:

trace("ABAFT\nABALYN\nABOUT".replace(/^AB/,'中国'));

trace("ABAFT\nABALYN\nABOUT".replace(/^AB/m,'中国'));

以上两种方式匹配的结果都与(1)结果一样,所以要匹配多行时,"g"和"m"要同时使用

3)$ 表示匹配字符串结尾处,在多行匹配字符串中,匹配方式指定为m时,从每个\n前开始匹配

4)* 表示其前面的字符或表达式出现0次或多次,即任意次,次数>=0,如果0次或多次都满足的情况,取出现多次
   如:/bo*/ 表示o可以出现0次或多次,bo,boo,boook,b,bk都匹配

5)+ 表示其前面的字符或表达式至少出现1次以上,即次数>=1,如果1次或多次满足的情况,取出现多次
   如:/bo+/ 表示o可以出现1次以上,bo,boo,boook都匹配,但b,bk不匹配

6)? 表示其前面的字符哎呀表达式可出现一次也可不出现,如果出现与可不出现两种都满足的情况,取出现一次
   如:trace("This Book is Good Boooooook BoxBx".replace(/Bo?/g,'一'));
   返回:This 一ok is Good 一ooooook 一x一x
  其中Book既满足Bo,又满足B,也就是说o可出现也可不出现,取第一种情况,Bo

《关于最小匹配和最大匹配(贪婪模式和非贪婪模式)》

".*"

匹配 "内容A" "内容B" "内容C"   结果只有一个匹配结果, 就是"内容A" "内容B" "内容C",

贪心模式尽可能的匹配到更长的内容,于是从第1个双引号开始直到最后一个双引号

".*?"

匹配 "内容A" "内容B" "内容C"

结果有3个匹配结果, 分别是"内容A" 和 "内容B" 和 "内容C" . 非贪心模式尽可能少的匹配

7)() 表示把正则表达式的特定串组成一个组,作为一个整体
   如:trace("AGoGo Is A Name AGo's Father".replace(/A(Go)*/g,'哈'));
              把Go作为一个整体,即Go可出现任意次
   返回:哈 Is 哈 Name 哈's Father

注意:组可以认为是正则表达式匹配模式的子模式,可以当做是一个普通的字符进行处理

(1)String.match()和RegExp.exec()捕捉了整个正则匹配的子串,同时捕捉了组匹配的子串
    如:

trace("this is a good boboobooobooook".replace(/(bo+)*/,'book'));
      bo+表示以b开头,o出现1次以上,然后再以组的形式出现任意多次
     返回:this is a good book
     /(bo+)*/ 这里相当于/(bo+)(bo+)(bo+)(bo+)/
   
    (2)组的反向引用,即把前面定义的组引用过来,如/(bo+).*\1kie/
     trace("this book is a goodbookie".replace(/(bo+).*\1kie/,'book')); 
     返回:this book
     /(bo+).*\1kie/ 这里相当于/(bo+).*(bo+)kie/
   
    (3)?:指定组所匹配的子串不被捕获
     trace("this book is a good bookie".match(/b(o+)k./));
     trace("this book is a good bookie".match(/b(?:o+)k./));
     返回:
      book ,oo
      book

(4)?=向前查找,即先匹配,再把符合某个特殊条件的取出来
     如:
     trace('flashmx flash8 flashcs3 flash4 flash5'.replace(/flash/g,'[FLAHSH]'));
     trace('flashmx flash8 flashcs3 flash4 flash5'.replace(/flash(?=cs)/g,'[FLAHSH]'));

返回:
          [FLAHSH]mx [FLAHSH]8 [FLAHSH]cs3 [FLAHSH]4 [FLAHSH]5
          flashmx flash8 [FLAHSH]cs3 flash4 flash5

/flash(?=cs)/g是在/flash/g的基础之上加了(?=cs),
      这样符合条件的有flashcs3 flashcs4 flashcs5三项,

?!向后查找,即先匹配,再把符合某个特殊条件的取出来
     如:
      trace('flashmx flash8 flashcs3 flashcs4 flashcs5'.replace(/flash/g,'[FLAHSH]'));
      trace('flashmx flash8 flashcs3 flashcs4 flashcs5'.replace(/flash(?!cs[3-5])/g,'[FLAHSH]'));
     返回:
      [FLAHSH]mx [FLAHSH]8 [FLAHSH]cs3 [FLAHSH]cs4 [FLAHSH]cs5
      [FLAHSH]mx [FLAHSH]8 flashcs3 [FLAHSH]cs4 [FLAHSH]cs5

/flash(?!cs[3-5])/g是在/flash/g基础之上加了(?!cs[3-5]),
      即除了flashcs3,flashcs4,flashcs5以上的所有项

?=与?!相斥

8)[] 表示一个范围,里面的字符满足一个即可
   如:/[bk]/ b,k都满足
      /[a-zA-Z0-9] 26个小写字母,26个大写字母,10个数字其中任一个都满足

(1)
    trace("32o498dslkfjjlkjLDSJFL70".match(/[^0-9]/g));
    trace("32o498dslkfjjlkjLDSJFL7^0".match(/[^0-9]/g));
    trace("32o498dslkfjjlkjLDSJFL7^0".match(/[0-9^]/g));

返回: o,d,s,l,k,f,j,j,l,k,j,L,D,S,J,F,L
     o,d,s,l,k,f,j,j,l,k,j,L,D,S,J,F,L,^
     3,2,4,9,8,7,^,0

如果把^放在[]字符集的开始处,表示取反的意思,如[^0-9],表示非数字,相当于\D
    如果把^放在[]字符集的开始处,且被匹配的字符串含有^字符时,即表示取反的意思,又把^作为一个普

通字符来看待,这样,非数字和^都满足,如上面的第二trace()   
  
   (2)在字符集中,"." 并不是一个元字符,而是当作一个普通字符看待,相当于用"\."转义
    trace('sdfdsfdfl34l3re.'.match(/[0-9.]/g));
    trace('sdfdsfdfl34l3re.'.match(/[0-9\.]/g));
   
    返回:
     3,4,3,.
     3,4,3,.

(3)在字符集中,只有"-"和"\"是被认为是转义的,
      如:[0-9] 表示从0到9的任一数字
    [\n\t] 表示\n换行和\t制表位

trace('ldslfasdasd\nksdjlsd\t324123424'.replace(/[\n\t]/g,'转义'));
    返回:ldslfasdasd转义ksdjlsd转义324123424

9)| 表示任选一,与[]功能相似
   如:/b|k/ b,k都满足
      /gook|book/ gook,book都满足
     trace("this is a good cook book".replace(/good|book/g,'哈'));
     返回:this is a 哈 cook 哈

注意:(1)
    trace("this is a good book".replace(/[gk]/g,'哈'));
    trace("this is a good book".replace(/g|k/g,'哈'));

返回:this is a 哈ood boo哈
         this is a 哈ood boo哈   
    以上两个表达式效果是一样的

但是:trace("this is a good cook book".replace(/good|book/g,'哈'));
       trace("this is a good cook book".replace(/[goodbook]/g,'哈'));
  
    返回:this is a 哈 cook 哈
       this is a 哈哈哈哈 c哈哈哈 哈哈哈哈
    以上两个表达式效果是不一样的,因为|把good和book作为一个整体,而[]把good和book
    合在一起,即goodbook,也就是说只要满足g,o,d,b,k其中任意一个字符就行了

10)- 表示一个范围,与[]一起用
   如:trace("lLJ62-76DS5LFd-4Jlk-中国".match(/[a-z\-]/g));
    [a-z\-]其中,a-z中的"-"是一个元字符,表示从a到z的一个范围,而\-转义后表示"-"字符

3.元序列
1){n}表示在它前面的字符或表达式必须重复n次,即次数=n
   如: /bo{2}/,其中o要重复2次,boo满足,boook不满足

2){n,}表示在它前面的字符或表达式必须重复n次以上,即次数>=n,如果既满足n,又满足n+1,取n+1,即取最大的
   如: /bo{2,}/,其中o要重复2次以上,boo满足,boook也满足

3){n,m}表示在它前面的字符或表达式必须重复n到m次以上,即n<=次数<=m,如果既满足n,又满足n+1,取n+1,即取最大的
   如: 
    trace("This Book is Good Boooooook BoxBx".replace(/Bo{2,6}/g,'哈'));
    返回:This 哈k is Good 哈ok BoxBx

trace("This Book is Good Boook BoxBx".replace(/Bo{2,6}/g,'哈'));
    返回:This 哈k is Good 哈k BoxBx

4)\d 表示匹配数字字符,即0-9
   \D 表示匹配非数字字符,与\d,即除了0-9之外的字符
   \w 表示匹配一个单词字符,即26个小写字母,26个大写字母,10个数字,和下划线
          \W 表示匹配非单词字符,与\w反义  
   \s 表示匹配任意空白字符
     \S 表示匹配任意非空间字符,与\s反义

4.标记
i ignoreCase 忽略大小写
g global   全局匹配
m multiline 多行模式
s dotall   指定元字符"."是否匹配"\n",即"\n"也作为一个普通字符处理
   如:
    trace("this is a book\nkie".replace(/bo+k.kie/g,'哈'));
    trace("this is a book\nkie".replace(/bo+k.kie/gs,'哈'));//在这里,\n被看成是一个普通字符

返回:
    this is a book
    kie
    this is a 哈

x extend   扩展模式,在扩展模式下,正则表示式的空白字符被忽略了,如/c _ d/ 的效果相当于 /c_d/

5.正则表达式的属性
source 可得到正则表达式的匹配模式,如:trace(/\d\d/.source);输出:\d\d
lastIndex 表示正则表达式在字符串中的起始匹配位置,只有当标记为g时才起作用

6.正则表达式的方法
exec(字符串) 返回一个Object
test(字符串) 返回一个Boolean值

2012/4/20 补充:

AS3正则表达式只能匹配同一行的内容,如果匹配的内容分散到多行是匹配不到的;

所以,如果必要应该先把换行符替换掉(content = content.replace(/\n/gi, "");)

然后再做其它匹配。

转自:http://hi.baidu.com/wojiubaibudu/item/20259da5991a8cdd5bf1910f

as3正则表达式的更多相关文章

  1. (转)AS3正则:元子符,元序列,标志,数量表达符

    (转)AS3正则:元子符,元序列,标志,数量表达符: AS3正则:元子符,元序列,标志,数量表达符 七月 4th, 2010 归类于 AS3前端技术 作者Linkjun 进行评论 as3正则:元子符, ...

  2. [2012-12-18 14:59:31]AS3 常用正则表达式的总结-不用google了,我帮收集的很多了

    正则表达式是一种通用的标准,大部分计算机语言都支持正则表达式,包括as3,这里转摘出了一些常用的正则表达式语句,大家用到的时候就不用自己写了.红色字体为常用正则:下面这个类是我自己写的一个示例,想必大 ...

  3. AS3之正则表达式讲解

    限制输入内容 (一).my_txt.restrict = "A-Z 0-9";               仅允许在文本字段中输入大写字符.空格和数字 (二).my_txt.res ...

  4. flex+AS3编程规范

    flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/   1.  缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...

  5. C++与AS3

    ActionScript 3(简称AS3)与 c++ 都是面向对象的编程(OOP)语言,都具有OOP的特性如封装.继承.多态等.二者在语法上有许多相似之处,基本上学过C++之后再学习AS3感觉并不是特 ...

  6. flex正则表达式

    正则表达式是一种通用的标准,大部分计算机语言都支持正则表达式,包括as3,这里收集了一些常用的正则表达式语句,大家用到的时候就不用自己写了 ^\d+$ //匹配非负整数(正整数 + 0) ^[0-9] ...

  7. 由“Jasperrpeorts 4.1.2升级到5.1.2对flex项目的解析”到AS3 带命名空间的XML的操作

    原文同步至:http://www.waylau.com/from-jasperrpeorts-4-1-2-upgraded-to-5-1-2-parsing-of-flex-projects-to-t ...

  8. [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补

    原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://co ...

  9. JavaScript正则表达式之分组匹配 / 反向引用

    语法 元字符:(pattern) 作用:用于反复匹配的分组 属性$1~$9 如果它(们)存在,用于得到对应分组中匹配到的子串 \1或$1 用于匹配第一个分组中的内容 \2或$2 用于匹配第一个分组中的 ...

随机推荐

  1. 编译带有PROJ4和GEOS模块的GDAL

    1.下载三个软件的源代码(去各自官网下载即可) 2.将PROJ4和GEOS的源码放到GDAL目录下的supportlibs文件夹中. 3.修改GDAL的nmake.opt文件,部分内容如下: # Un ...

  2. VR技术的高速发展阶段

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 在虚拟现实技术的高速发展阶段,与虚拟现实密切相关的计算机图形学.数字图像处理.传感技术等学科迅速发展,从 ...

  3. Java(Helloworld.java)

    public class A{ public static void main(String args[]){ System.out.println("Hello world!") ...

  4. File类基础

    File类的作用: Java的io包中定义了File类,用于对文件或文件夹的管理操作. File类只能够用于表示文件或文件夹的信息(属性)和对该文件或文件夹的删除创建操作 (不能对内容进行访问) 通过 ...

  5. POJ 2559 Largest Rectangle in a Histogram ——笛卡尔树

    [题目分析] 本来是单调栈的题目,用笛卡尔树可以快速的水过去. 把每一个矩阵看成一个二元组(出现的顺序,高度). 然后建造笛卡尔树. 神奇的发现,每一个节点的高度*该子树的大小,就是这一块最大的子矩阵 ...

  6. iOS Runtime学习笔记

    Associated Objects: @interface NSObject (AssociatedObject) @property (nonatomic, strong) id associat ...

  7. Why do we live in this world?

    Why do we live in this world? It seems to me there is nothing but two reasons, - to live the livabil ...

  8. phonegap3.5了结

    搞了三天的phonegap3.5.最后怎么搞都搞不好了.修改了www中的index.html的内容,clean也不行,在node.js中cordova build也不行. 反正就是apk没有更新啦.至 ...

  9. 局域网内利用gitlab,jenkins自动生成gitbook并发布(nginx)

    安装了GitBook,内网使用,没法用上gitbook的网页. 用gitbook serve只能展示一本书,而且也不利于长期维护. 于是使用gitlab,jenkins,和nginx配合gitbook ...

  10. 《大道至简》第一章读后感(java语言伪代码)

    中秋放假之际读了建民老师介绍的<大道至简>的第一章,其中以愚公移山的故事形象的介绍向介绍编程的精义.愚公的出现要远远早于计算机发展的历史,甚至早于一些西方国家的文明史.但是,这个故事许是我 ...