as3正则表达式
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正则表达式的更多相关文章
- (转)AS3正则:元子符,元序列,标志,数量表达符
(转)AS3正则:元子符,元序列,标志,数量表达符: AS3正则:元子符,元序列,标志,数量表达符 七月 4th, 2010 归类于 AS3前端技术 作者Linkjun 进行评论 as3正则:元子符, ...
- [2012-12-18 14:59:31]AS3 常用正则表达式的总结-不用google了,我帮收集的很多了
正则表达式是一种通用的标准,大部分计算机语言都支持正则表达式,包括as3,这里转摘出了一些常用的正则表达式语句,大家用到的时候就不用自己写了.红色字体为常用正则:下面这个类是我自己写的一个示例,想必大 ...
- AS3之正则表达式讲解
限制输入内容 (一).my_txt.restrict = "A-Z 0-9"; 仅允许在文本字段中输入大写字符.空格和数字 (二).my_txt.res ...
- flex+AS3编程规范
flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/ 1. 缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...
- C++与AS3
ActionScript 3(简称AS3)与 c++ 都是面向对象的编程(OOP)语言,都具有OOP的特性如封装.继承.多态等.二者在语法上有许多相似之处,基本上学过C++之后再学习AS3感觉并不是特 ...
- flex正则表达式
正则表达式是一种通用的标准,大部分计算机语言都支持正则表达式,包括as3,这里收集了一些常用的正则表达式语句,大家用到的时候就不用自己写了 ^\d+$ //匹配非负整数(正整数 + 0) ^[0-9] ...
- 由“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 ...
- [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补
原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://co ...
- JavaScript正则表达式之分组匹配 / 反向引用
语法 元字符:(pattern) 作用:用于反复匹配的分组 属性$1~$9 如果它(们)存在,用于得到对应分组中匹配到的子串 \1或$1 用于匹配第一个分组中的内容 \2或$2 用于匹配第一个分组中的 ...
随机推荐
- iOS 编码转换
- (NSString *)SaveFileToDocuments:(NSString *)url { // NSString *url = @"http://172.28.250.70/a ...
- Swift中的一些关键字
以下关键字关于引用传参.属性.修改成员变量.静态变量.索引和构造函数重载 读过The Swift Programming Language的人都能看得出,我上面的这几个说法全不是apple的习惯用语. ...
- git学习(三):版本控制
查看每次修改日志 git log 会显示每次修改的日期和相应提交的commit 版本控制 git reset --hard <版本id> 这里的id可以是HEAD^(上一个) HEAD^^ ...
- MYSQL外键(Foreign Key)的使用
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...
- 重置按钮小tip—为何不能重置表单数据呢
刚开始学html的同志有时候可能会遇到一个问题,就是为什么在编辑页面里面的重置按钮总是不起作用呢不清空数据呢?接下来就说明一下原因. Reset 对象 Reset 对象代表 HTML 表单中的一个重置 ...
- 1.2 Quartz 2D 内存管理
本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 通过 Product -> Analyze 来进行静态分析 可以使用Quar ...
- 从Bayesian角度浅析Batch Normalization
前置阅读:http://blog.csdn.net/happynear/article/details/44238541——Batch Norm阅读笔记与实现 前置阅读:http://www.zhih ...
- [BZOJ1501][NOI2005] 智慧珠游戏
Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...
- js 类型转换学习
类型转换分为显示转换和隐式转换 参考http://www.cnblogs.com/mizzle/archive/2011/08/12/2135885.html 先事件显示的 通过手动进行类型转换,Ja ...
- 全新的博客之旅&大学生活
博客之旅: 刚刚申请了博客,感觉非常兴奋,整个人都变得有精神了. 想来几个月之前看到奇奇申了博客,在上面写文章,写各种解题报告,心里就好羡慕,好希望将来有一天,也能有一个属于自己的博客.由于之前课业压 ...