3 ActionScript3.0中的正则表达式
发布时间:2020-12-14 02:22:55 所属栏目:百科 来源:网络整理
导读:================================================ chapter 3 ActionScript3.0中的正则表达式 先来看一个查找和替换的例子: var myPattern:RegExp = /Windows/g; var str:String = "Windows is a excellent operation system. I love Windows."; var repStr
================================================
chapter 3 ActionScript3.0中的正则表达式 先来看一个查找和替换的例子: var myPattern:RegExp = /Windows/g; var str:String = "Windows is a excellent operation system. I love Windows."; var repStr:String = "Linux"; trace(str.match(myPattern)); //输出:Windows,Windows trace(str.match(myPattern,repStr)); //输出:Linux is a excellent operation system. I love Linux. 认识正则表达式: //正则表达式分为两部分: 一部分:在双斜杠里的,叫做匹配模式(Pattern); 一部分: 在双斜杠外的,叫做修饰符或者标志位; 另外,AS中还有一种写法: var myPattern:RegExp = new RegExp("Windows","g"); AS3.0中正则表达式的引擎: 正则表达式有两种引擎:DFA引擎和NFA引擎。NFA比DFA应用广泛,因为它支持回调 引用(backreference)和惰性量词(lazy quantifiers)。 但是DFA引擎的执行效率比NFA引擎执行效率高,但更耗内存;NFA没有使用回调引 用时,与DFA的执行效率差不多。 在执行结果上,ActionScript3.0是一种贪婪(Greedy)的执行方式,一旦找到匹配的 内容,立即返回,停止继续搜索。 ActionScript3.0中使用的是功能更加强大的NFA引擎。 实例: var singleWordPattern:RegExp = /com/; var targetStr:String = "There is a computer at foo.com"; trace(targetStr.match(singleWordPattern)); //输出:com (是computer的com,不是foo.com的com) //AS3.0中可以方法链式表达,下面是一个转义特殊字符的例子: var fooPattern:RegExp = ///g; //注意,加上g修饰符表示全局匹配,而不是只返回第1个; var targetStr:String = "http://www.kingda.org/index.html?random=1"; trace("length:" + targetStr.match(fooPattern)); //输出:length:3 表示有3个正斜杠被匹配了 正则表达式的5个修饰符(标识位): g i m s x 式的一部分被忽略。这样可以使代码的可读性更高一些。 正则表达式元字符运算优先级 元字符 转义符 (),(?:),(?=),[] *,+,?,{n},{n,}{n,m} ^,$,anymetacharacter 顺序和位置 | RegExp类和字符串结合使用: RegExp类和字符串结合使用有两个方法:exec()和test();在字符串匹配类中有match RegExp类中的test()方法是检查是否包含正则表达式匹配内容,如果包含,则返回 true,如果不包含,就返回false。 var target:String = "This is a test"; var reg:RegExp = /test/; trace(reg.test(target)); RegExp类中的exec()方法,也可用于检查是否包含正则表达式匹配内容,如果包含,则 返回一个数组,内容包含匹配的字符串,和正则表达式中括号匹配到的自字符串。 这个数组还有index属性,指明字符串匹配到的索引位置。 以下实例为查找以t为首字母的单词: var myPattern:RegExp = /bt([a-z]+)b/; var str:String = "OK,the theory is not good"; var result:Array = myPattern.exec(str); trace(result); //输出:the,he //the是正则表达式匹配到的字符串,he是正则表达式中括号匹配到的字符串 trace(result.index); //输出: 4 //正则表达式匹配到的第一个字符串的索引位置 //如果想要多次匹配,可以加上g标识符。 String类的search()和match() search()方法将返回正则表达式的第一个字符串的索引位置 match()方法将返回正则表达式找到的匹配的字符串 var PatternA:RegExp = /bt([a-z]+)b/; trace(str.search(PatternA)); //输出: 4 trace(str.match(PatternA)); //输出: the,theory String类的replace()与正则表达式向后引用 String类的replace()需要两个参数,第一个参数是传入的正则表达式,第二个参数是 要替换的字符串。如果正则表达式加了g这个修饰符,则全部替换。 var str:String:"Ok,the the the theory is not good"; var patternA:RegExp = /bt[a-z]b/; trace(str.replace(patternA,"foo")); //输出:Ok,foo the the theory is not good var patternB:RegExp = /bt[a-z]b/g; 利用正则表达式消除连续的两个单词: var str:String = "Ok,we we will do do it"; var patternA:RegExp = /b([a-z]+) 1 b/gi; //括号里的正则表达式中的第一个括号中匹配的内容可以被$1调用,在括号内可以被 1调用,以此类推。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |