第3章 Flex4脚本语言ActionScript30语言进阶.ppt
第3章 Flex 4脚本语言:ActionScript 3.0语言进阶3.13.1 数学运算3.2 3.2 数组操作3.33.3 字符串操作3.43.4 正则表达式3.53.5 日期和时间3.6 XML3.6 XML操作3.1 数学运算数学运算v3.1.1 3.1.1 求绝对值求绝对值Math类的abs()方法可以取得指定数字的绝对值,语法格式如下:Math.abs(val)该方法计算并返回由参数val指定的数字的绝对值。例如:var num:Number=-12.3;trace(Math.abs(num);/输出结果:12.33.1.2 求最大最小值求最大最小值max()方法可以在多个数值当中计算并返回最大值,而min()方法则计算多个数值中的最小值。语法格式如下:Math.max(值1,值2,值n);Math.min(值1,值2,值n);3.1.3 角度计算角度计算在数学计算中经常要计算与角度有关的值,如计算角度的正弦值,Math类中提供相应的方法计算这些值,如表3.1所示。方法名语法格式说明sin()Math.sin(弧度)以弧度为单位计算并返回指定角度的正弦值cos()Math.cos(弧度)以弧度为单位计算并返回指定角度的余弦值tan()Math.tan(弧度)以弧度为单位计算并返回指定角度的正切值asin()Math.asin(val)以弧度为单位计算并返回由参数val指定的数字的反正弦值acos()Math.acos(val)以弧度为单位计算并返回由参数val指定的数字的反余弦值atan()Math.atan(val)以弧度为单位计算并返回角度值,该角度的正切值由参数val指定。返回值介于负二分之pi和正二分之pi之间atan2()Math.atan2(y,x)以弧度为单位计算并返回点y/x的角度,该角度从圆的x轴(0点在其上,0表示圆心)沿逆时针方向测量。返回值介于正pi和负pi之间3.1.4 舍入操作舍入操作c1 1round()round()方法方法round()方法可以将小数转为整数,原则为四舍五入,语法格式如下:Math.round(val);该方法将参数val的值向上或向下舍入为最接近的整数并返回该值。如果val与最接近的两个整数等距离(即该数字以“.5”结尾),则该值向上舍入为下一个较大的整数。3.1.4 舍入操作舍入操作c2 2floor()floor()方法方法floor()方法用于去掉一个数值的小数部分,语法格式如下:Math.floor(val);floor()方法返回由参数val指定的数字或表达式的下限值。下限值是小于等于指定数字或表达式的最接近的整数。例如:trace(Math.floor(3.4);/输出结果:3trace(Math.floor(-5.5);/输出结果:-6c3 3ceil()ceil()方法方法ceil()方法也用于去掉数值的小数部分,语法格式如下:Math.ceil(val);ceil()方法返回指定数字或表达式的上限值。数字的上限值是大于等于该数字的最接近的整数。例如:trace(Math.ceil(3.4);/输出结果:4trace(Math.ceil(-5.5);/输出结果:-53.1.5 生成随机数生成随机数c1 1使用使用MathMath类的类的random()random()方法方法使用Math类的random()方法可以生成一个伪随机数。因为该计算不可避免地包含某些非随机的成分,所以返回的数字以保密方式计算且为伪随机数。语法格式如下:Math.random();该方法的返回值是一个0到0.9999999999999999的小数。例如:trace(Math.random();/输出结果:随机小数random()方法只能生成随机小数,但大多数情况下用户希望生成整数,这时可以结合Math()类的其他方法生成。3.1.5 生成随机数生成随机数c2 2使用使用NumberUtilitiesNumberUtilities类的类的random()random()方法方法在使用前使用import语句导入NumberUtilities类代码如下所示:import ascb.util.NumberUtilities;NumberUtilities类的random()方法的语法格式如下:NumberUtilities.random(最大值,最小值,间隔值);其中间隔值参数为可选,默认为1。例如,生成一个50100的随机数,间隔值为5,使用如下语句:NumberUtilities.random(50,100,5);3.1.6 其他数学运算其他数学运算c1 1sqrt()sqrt()方法方法sqrt()方法用于计算一个数的平方根,语法格式如下:Math.sqrt(val);c2 2exp()exp()方法方法exp()方法的语法格式如下:Math.exp(val);c3 3log()log()方法方法log()方法的语法格式如下:Math.log(val);c4 4pow()pow()方法方法pow()方法的语法格式如下:Math.pow(val1,val2);pow()方法计算并返回val1的val2次幂。例如,计算2的10次方:trace(Math.pow(2,10);/输出结果:10243.1.7 应用实例:猜数字应用实例:猜数字新建一个MXML应用程序,命名为Guess.mxml。在程序文件的设计模式中拖曳一个TextInput标签和一个Button标签,在文件的代码模式中设计代码所示。运行结果如图所示。3.2 数组操作数组操作v3.2.1 3.2.1 创建数组创建数组c1 1创建空数组创建空数组调用不带参数的Array()构造函数,可以创建一个空的数组对象。语法格式如下:var 数组变量:Array=new Array();例如,创建一个空数组arr如下所示:var arr:Array=new Array();c2 2指定数组长度指定数组长度数组长度是指数组在内存空间中占用的连续空间长度。例如,设置数组长度为3,表示该数组最多可以存储3个元素。将一个数字用作Array()构造函数的唯一参数,则会创建长度等于此数值的数组。语法格式如下:var 数组变量:Array=new Array(n);数组长度n必须是介于0和232-1(4,294,967,295)之间的无符号整数。创建后的数组中每个元素的初始值都被设置为undefined。3.2.1 创建数组创建数组c3 3指定数组元素指定数组元素调用Array()构造函数,并传递一个元素列表作为参数,此时将创建一个数组,这个数组中的每个元素与参数对应。语法格式如下:var 数组变量:Array=new Array(元素1,元素2,元素n)元素可以是常量或变量,元素的个数就是数组的长度。使用这种方式创建的是索引数组,数组的键名为从0开始依次递增的整数。例如,第1个元素的索引为0,第2个元素的索引为1。数组创建完后可以使用以下格式访问数组中的元素:数组变量索引3.2.1 创建数组创建数组c4 4使用使用“”操作符创建数组操作符创建数组使用“”操作符可以将数组文本直接分配给数组变量,不需要使用Array()构造函数。语法格式如下:var 数组变量:Array=元素1,元素2,元素n;例如:var arr:Array=1,2,3;trace(arr.length);/输出结果:3trace(arr0);/输出结果:13.2.2 查询数组查询数组访问数组元素一般使用数组元素的索引值。遍历数组中的元素,可以结合循环语句实现。例如,以下代码使用for循环遍历数组:var color:Array=new Array(red,blue,white);for(var i:int=0;icolor.length;i+)trace(colori);如果要查询某个数组元素,可以在循环中加入判断条件,配合break语句即可。例如:var color:Array=new Array(red,blue,white);for(var i:int=0;icolor.length;i+)if(colori=blue)trace(i+:+colori);break;3.2.3 添加数组元素添加数组元素c1 1使用使用“”操作符操作符使用“”操作符可以在数组中添加数组元素,语法格式如下:数组变量索引=元素值;如果Array数组对象在该索引处还没有元素,则创建该索引并将值存储在该索引中。c2 2使用使用push()push()和和unshift()unshift()方法添加元素方法添加元素Array类的push()方法用于在数组末尾添加一个或多个元素。插入的最后一个元素将具有最大索引号。unshift()方法用于在数组开头插入一个或多个元素,并且始终在索引号0处插入。语法格式如下:数组变量.push(元素1,元素2,);数组变量.unshift(元素1,元素2,);3.2.3 添加数组元素添加数组元素c3 3使用使用splice()splice()方法添加元素方法添加元素Array类的splice()方法用于在数组的指定索引处删除指定数目的元素,并可以添加新的元素。语法格式如下:数组变量.splice(指定索引);数组变量.splice(指定索引,要删除的元素数目);数组变量.splice(指定索引,要删除的元素数目,新元素1,新元素2,新元素n);指定的索引可以是负值,表示数组从尾部倒数的位置。例如,索引为-1表示是倒数第1个元素,索引为-3表示是倒数第3个元素。3.2.4 删除数组元素删除数组元素在Array类中可以使用pop()和shift()方法删除数组中不需要的元素。pop()方法用于删除数组末尾的一个元素,即删除最大索引号的元素。shift()方法用于删除数组头部的一个元素,即删除索引号为0的元素。语法格式如下:数组对象.pop();数组对象.shift();这两个方法都返回被删除元素的值。例如:var arr:Array=new Array(one,two,three,four,five,six);trace(arr.pop();/输出结果:“six”trace(arr.shift();/输出结果:“one”3.2.5 数组排序数组排序c1 1默认排序默认排序Array类提供了sort()方法对数组的进行排序,使用sort()方法排序可以分为基本排序和自定义排序。基本排序按照默认顺序对数组进行排序,自定义排序可以自定义规则进行排序。(1)基本排序。基本排序语法格式下:数组对象.sort(options);(2)自定义排序。除了可用于Array对象的sort()方法的基本排序之外,还可以自定义排序规则。若要自定义排序,需要编写自定义排序函数,并将该函数作为参数传递给sort()方法。语法格式如下:数组对象.sort(自定义排序函数名);例如,有一个班级列表,其中每个列表元素都包含班级的名称(名称具有一定的格式:类别、班级),如果对班级名称中的班级类别进行排序,则必须使用自定义排序。定义一个函数orderClass,用于分析数组中的每一个元素,并作为参数传递给sort()方法,代码所示。3.2.5 数组排序数组排序c2 2对象数组的排序对象数组的排序下面的示例数组中每个元素均为对象而非字符串。每个对象中包含人的姓名和年龄如下所示:var array:Array=new Array();/添加对象到array数组中array.push(name:张三,age:25);array.push(name:李四,age:23);array.push(name:王五,age:27);array.push(name:赵六,age:20);sortOn()方法的语法格式如下:数组变量.sortOn(fieldName,options);3.2.5 数组排序数组排序sortOn()方法定义fieldName和options两个参数。fieldName为排序的关键字,可以指定一个或多个,中间用“|”隔开,fieldName参数必须为字符串。options参数与sort()方法中options参数的用法相同。例如,指定参数“age”和Array.NUMERIC调用sortOn()方法如下所示:/设置排序属性 和排序参数array.sortOn(age,Array.NUMERIC);for(var i:uint=0;iarray.length;i+)trace(name:+arrayi.name+age:+arrayi.age);输出结果如下所示:name:赵六 age:20name:李四 age:23name:张三 age:25name:王五 age:273.2.5 数组排序数组排序c3 3倒序排序倒序排序使用Array类的reverse()方法可以将数组从当前顺序切换为相反顺序。语法格式如下:数组变量.reverse();reverse()方法返回新的数组,原数组也相应改变。例如:var arr:Array=new Array(one,two,three);arr.reverse();trace(arr)/输出结果:three,two,onetrace(arr);/输出结果:three,two,one3.2.6 创建关联数组创建关联数组有两种创建关联数组的方式。第一种创建关联数组的方式是使用Object实例。使用Object实例,可以通过对象文本初始化数组。Object类的实例(也称为“通用对象”)在功能上等同于关联数组。通用对象的每个属性名称都用作键,提供对存储的值的访问。定义的语法格式如下:var变量名:Object=键名1:值1,键名2:值2,;或者先使用Object构造函数创建数组,然后通过“”或“.”运算符向数组中添加新值,格式如下:var 变量名:Object=new Object();变量名.键名1=值1;变量名.键名2=值2;3.2.6 创建关联数组创建关联数组第二种创建关联数组的方式是先使用Array构造函数创建一个空数组,然后通过“”和“.”运算符将键和值添加到数组中,语法格式如下:var 数组变量:Array=new Array();数组变量键名1=值1;数组变量键名2=值1;例如,以下示例使用Array构造函数创建一个名为stuInfo的关联数组:var stuInfo:Array=new Array();stuInfoname=张三;stuInfoage=20;trace(stuInfoname);/输出结果:张三3.2.7 其他数组操作其他数组操作c1 1合成新数组合成新数组concat()方法用于将元素或数组连接到一个数组的尾部形成新数组。语法格式如下:数组变量.concat(参数列表);concat()将参数中指定的元素与原数组中的元素连接,并返回新的数组。如果这些参数指定了一个数组,将连接该数组中的元素。例如:var array1:Array=new Array(one,two,three);var array2:Array=new Array(four,five,six);/将array1与array2组合为新的数组,输出结果:one,two,three,four,five,sixtrace(array1.concat(array2);trace(array1);/输出结果:one,two,threetrace(array1.concat(four,five,six);/输出结果:one,two,three,four,five,sixc2 2toString()toString()方法方法使用Array类的toString()方法可以返回包含数组中所有元素的逗号分隔列表。例如:var array:Array=new Array(one,two,three);trace(array.toString();/输出结果:one,two,three3.2.7 其他数组操作其他数组操作c3 3join()join()方法方法join()方法将数组中的元素转换为字符串,并在元素间插入指定的分隔符,连接这些元素,然后返回结果字符串。语法格式如下:数组变量.join(分隔符);如果省略分隔符参数,则默认以逗号分隔。若指定分隔符,则将数组元素使用分隔符分隔,形成新的连接字符串,并返回。例如:var array:Array=new Array(one,two,three);trace(array.join();/输出结果:one,two,threetrace(array.join(-);/输出结果:one-two-three4 4slice()slice()方法方法slice()方法可以获取数组中一段连续的元素,且不改变原数组的内容。语法格式如下:数组变量.slice(startIndex,endIndex);slice()方法有两个参数:startIndex和endIndex。返回值是一个新数组,新数组中包含从现有数组分离的元素副本。返回值数组从原数组的startIndex 索引处的元素开始,到endIndex处的前一个元素结束。3.2.8 数组集合数组集合c1 1创建对象创建对象创建ArrayCollection对象的语法格式如下:var变量:ArrayCollection=new ArrayCollection(source);其中,使用source指定源数组创建新的ArrayCollection对象。如果未指定source,则将使用空数组。例如:var arr:Array=one,two,three;/创建arr数组对象/创建ArrayCollection集合对象,以arr为构造方法的参数var arrColl1:ArrayCollection=new ArrayCollection(arr);var arrColl2:ArrayCollection=new ArrayCollection(1,2,3);3.2.8 数组集合数组集合c2 2添加项目添加项目使用addItem()方法可以向列表末尾添加指定项目。使用addItemAt()方法可以在指定的索引处添加项目。语法格式如下:对象.addItem(obj);对象.addItemAt(obj,index);参数obj为要添加的项目,index为要添加项目的索引位置,一般为整数。c3 3查找项目查找项目contains()方法可以检测是否包含指定对象的信息,此搜索仅在找到完全与参数匹配的项目时才会成功。语法格式如下:对象.contains(obj);例如:var arrColl:ArrayCollection=new ArrayCollection(one,two,three);if(arrColl.contains(one)/检测是否包含元素“one”trace(Contains One!);getIetmAt()方法可以获取指定索引位置的项目,语法格式如下:对象.getIetmAt(index);3.2.8 数组集合数组集合c4 4删除项目删除项目使用removeItemAt()方法可以删除指定索引处的项目。使用removeAll()方法可以删除列表中的所有项目。语法格式如下:对象.removeItemAt(index);对象.removeAll();3.2.9 应用实例:数组排序应用实例:数组排序新建MXML应用程序,命名为ArraySort.mxml。新建文本框(TextInput)、下拉框(DropDownList)和按钮(Button)。页面的代码。运行结果如图所示。3.3 字符串操作字符串操作v3.3.1 3.3.1 字符串赋值字符串赋值c1 1字符串文本字符串文本使用字符串文本可以直接给字符串变量赋值。字符串文本由双直引号()或单直引号()字符声明。例如:var str:String=aaa;var str2:String=aaa;字符串必须使用引号封闭,而且封闭的引号必须一致。如果引号中没有文本,则认为是一个空字符串。如果字符串文本中包含引号,要注意单引号和双引号的使用。例如,以下代码中的字符串定义是错误的:var str:String=He said ok.;3.3.1 字符串赋值字符串赋值c2 2字符串对象字符串对象所有的字符串操作都是基于String类的,所以进行字符串赋值时也可以使用String类的构造函数赋值。例如:var str:String=new String(aaa);上例与如下所示的字符串赋值语句是等价的:var str:String=aaa;3.3.2 连接字符串连接字符串c1 1使用使用“+”或或“+=+=”操作符操作符“+”操作符是使加号左边字符串的尾部和加号右边字符串的首部相连。例如:var str:String=Hello;var str2:String=World!;var str3:String=str+str2;trace(str3);/输出结果:Hello World!“+=”操作符表示先进行字符串连接,然后把结果赋值给第一个字符串变量。例如:var str1:String=Hello;var str2:String=World!;str1+=str2;trace(str1);/输出结果:Hello World!3.3.2 连接字符串连接字符串c2 2使用使用concat()concat()方法方法String类的concat()方法用于在String对象的末尾追加字符串,并返回新字符串,语法格式如下:String对象.concat(args);使用concat()方法后,原String对象的值保持不变。例如:var str:String=Hello;var str2:String=World!;var str3:String=str.concat(str2);trace(str3);/输出结果:Hello World!3.3.3 计算字符串长度计算字符串长度通过String类的length属性可以得到字符串的长度。语法格式如下:String对象.length使用length属性得到的是一个整数,其值等于字符串中的字符数。例如:var str:String=Adobe;trace(str.length);/输出结果:5空字符串和null字符串的长度均为0,如下例所示:var str1:String=new String();trace(str1.length);/输出结果:0var str2:String=;trace(str2.length);/输出结果:03.3.4 大小写转换大小写转换String类提供了大小写转换的方法。使用toLowerCase()方法可以将字符串中的英文字母字符转换为小写,使用toUpperCase()方法可以转换为大写。语法格式如下:String对象.toLowerCase();String对象.toUpperCase();例如:var str:String=AbcDEFgh;trace(str.toLowerCase();/输出结果:abcdefghtrace(str.toUpperCase();/输出结果:ABCDEFGHtrace(str);/输出结果:AbcDEFgh3.3.5 字符串裁剪字符串裁剪使用trim()方法,首先需要引入StringUtil类,如下所示:import mx.utils.StringUtil;StringUtil类在Flex中是一个全静态类,用于操作字符对像,不需要建立StringUtil实例就可以使用StringUtil类的方法。trim()方法语法格式如下:StringUtil.trim(字符串);3.3.6 字符串比较字符串比较字符串之间可以使用比较运算符“”、“=”和“”进行比较。例如:var str:String=A;var str2:String=a;trace(strstr2);/输出结果:true可以将字符串之间的比较用于条件语句(如if和while),例如:var str:String=A;var str2:String=a;if(strstr2)trace(A小于a!);else if(str=str2)trace(A等于a!);elsetrace(A大于a!);3.3.7 获取子字符串获取子字符串c1 1substring()substring()方法方法语法格式如下:String对象.substring(startIndex,endIndex);substring()方法返回一个字符串,其中包含由startIndex位置的字符和一直到endIndex-1位置的所有字符。c2 2substr()substr()方法方法语法格式如下:String对象.substr(startIndex,len);substr()方法获取从startIndex位置开始的len个字符的子字符串。例如:var str:String=Hello World!;trace(str.substr(0,5);/输出结果:Hello3.3.7 获取子字符串获取子字符串c3 3slice()slice()方法方法语法格式如下:String对象.slice(startIndex,endIndex);slice()方法和substring()方法的功能相同,参数也一致。但不同的是,slice()方法可以使用负整数作为参数。当指定两个非负整数作为参数时,slice()方法的运行方式将与substring()完全一样;如果使用负整数作为slice()方法的参数,则字符位置将从字符串末尾开始向前算起。例如:var str:String=Hello World!;trace(str.substring(1,7);/输出结果:ello Wtrace(str.slice(-11,7);/输出结果:ello W3.3.7 获取子字符串获取子字符串c4 4charAt()charAt()方法方法如果要获取字符串中某个位置的单个字符,可以使用charAt()方法。语法格式如下:String对象.charAt(index);参数index表示字符的位置,为正整数。例如:var str:String=hello;for(var i:int=0;istr.length;i+)trace(str.charAt(i);/输出结果:h e l l o3.3.8 字符串查找字符串查找c1 1indexOf()indexOf()和和lastIndexOf()lastIndexOf()方法方法indexOf()和lastIndexOf()方法用于在字符串内查找匹配的子字符串。语法格式如下:String对象.indexOf(val,startIndex);String对象.lastIndexOf(val,startIndex);参数val为要查找的字符串。参数startIndex为开始查找的索引位置。如果省略参数start Index,则indexOf()方法默认为0,lastIndexOf()方法默认为字符串的结束位置。c2 2search()search()方法方法search()方法返回与给定模式相匹配的,第一个子字符串的索引位置。语法格式如下:String对象.search(pattern);参数pattern为要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。search()方法搜索指定的pattern,并返回第一个匹配子字符串的索引。如果没有匹配的子字符串,该方法返回-1。例如:var str:String=Hello World!;trace(str.search(World);/输出结果:63.3.8 字符串查找字符串查找c3 3match()match()方法方法match()方法可以解决多个匹配项的问题,它搜索一个匹配的子字符串,语法格式如下:String对象.match(pattern);match()方法通常与正则表达式一起使用,如果找到匹配项,则返回一个字符串数组,其中包括与指定的pattern匹配的字符串中的所有子字符串。但如果pattern中未设置g(全局)标志,则返回的数组中包含的匹配项将不多于一项。例如:var str:String=I say to others the Words hello world!;trace(str.match(the);/输出结果:the3.3.9 字符串替换字符串替换String类提供了replace()方法进行字符串替换操作。replace()方法的语法格式如下:String对象.replace(pattern,val);参数pattern为要搜索的字符串模式,参数val为要替换的字符串。replace()方法相对于字符串匹配指定的pattern进行替换,并返回一个新字符串,其中,仅将的第一个pattern匹配项替换为val所指定的内容。例如:var str:String=My name is Tom,what is your name;trace(str.replace(is,is not);/输出结果:My name is not Tom,what is your name3.3.10 其他对象转换为字符串其他对象转换为字符串ActionScript中所有对象都提供toString()方法,用于获取任何类型对象的字符串表示形式。例如:var i:uint=101;trace(i.toString();/输出结果:101在使用“+”连接运算符连接String对象和不属于字符串的对象时,无须使用toString()方法。3.3.11 应用实例:统计字数应用实例:统计字数新建一个MXML应用程序,命名为CountWords。在程序文件的设计模式中拖曳一个TextArea标签用于输入大段文字,拖曳一个TextInput标签用于输入要统计的字符,界面如图所示。3.3.11 应用实例:统计字数应用实例:统计字数主程序文件的代码所示。执行结果如图所示。3.4 正则表达式正则表达式v3.4.1 3.4.1 正则表达式基础正则表达式基础使用正则表达式可以完成以下的功能。测试字符串的某个模式。例如,可以对输入字符串进行测试,检查在该字符串是否存在Email地址模式或信用卡号码模式。这称为数据有效性验证。替换文本。可以在文档中使用正则表达式标志特定字符串,然后可以全部将其删除,或者替换为其他的字符串。根据模式匹配从字符串中提取一个子字符串。可以用于在文本或输入字段中查找特定字符串。3.4.2 正则表达式语法正则表达式语法c1 1匹配模式匹配模式匹配模式中可以包含普通字符、元字符及不可见字符。表3.2列出了ActionScript 3.0中正则表达式的普通字符、元字符和不可见字符。字符说明普通文字和符号A到Z,a到z,数字0到9,以及不是元字符的其他符号(如#、=)元字符11个被保留做特殊用途的符号:$.|?*+()不可见字符cx、f、n、r、s、S、t、v3.4.2 正则表达式语法正则表达式语法由元字符与普通字符组成的匹配模式常用语法格式如表3.3所示。不可见字符的说明如表3.4所示。字符说明cx匹配由x指明的控制字符。例如,cM匹配一个Control-M或回车符。x的值必须为AZ或az之一。否则,将c视为一个原义的c字符f匹配一个换页符。等价于x0c和cLn匹配一个换行符。等价于x0a和cJr匹配一个回车符。等价于x0d和cMs匹配任何空白字符,包括空格、制表符、换页符等。等价于fnrtvS匹配任何非空白字符。等价于fnrtvt匹配一个制表符。等价于x09和cIv匹配一个垂直制表符。等价于x0b和cK3.4.2 正则表达式语法正则表达式语法表3.5列出了这些组合及它们的作用,通过表中的组合可以使正则表达式变得更简洁。字符说明b匹配一个单词边界,即指单词和空格间的位置。例如,erb可以匹配never中的er,但不能匹配verb中的erB匹配非单词边界。erB能匹配verb中的er,但不能匹配never中的erd匹配一个数字字符。等价于0-9D匹配一个非数字字符。等价于0-9w匹配包括下划线的任何单词字符。等价于A-Za-z0-9W匹配任何非单词字符,等价于A-Za-z0-9_xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,x41匹配A。x041则等价于x04&1。正则表达式中可以使用ASCII编码num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,(.)1匹配两个连续的相同字符n标志一个八进制转义值或一个后向引用。如果n之前至少n个获取的子表达式,则n为后向引用。否则,如果n为八进制数字(07),则n为一个八进制转义值nm标志一个八进制转义值或一个后向引用。如果nm之前至少有nm个获取的子表达式,则nm为后向引用。如果nm之前至少有n个获取,则n为一个后跟文字m的后向引用。如果前面的条件都不满足,若n和m均为八进制数字(07),则nm将匹配八进制转义值nmnml如果n为八进制数字(03),且m和l均为八进制数字(07),则匹配八进制转义值nmlun匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,u00A9匹配版权符号(),u4e00-u9fa5匹配中文字符3.4.2 正则表达式语法正则表达式语法c2 2正则表达式的标志位正则表达式的标志位正则表达式的标志位一共有五种。每种标志都可以作为正则表达式对象属性进行访问,如表3.6所示。标志位全称含义gglobal全局匹配,匹配多个iignoreCase不区分大小写的匹配,应用于AZ和az字符mmultiline设置此标志后,$和可以分别匹配行的开头和结尾sdotall设置此标志后,点“.”可以匹配换行符“n”xextended允许扩展的正则表达式3.4.3 创建正则表达式创建正则表达式创建实例的方式有两种,第一种方式是使用RegExp数据类型声明一个正则表达式,第二种方式是创建一个RegExp类的实例声明正则表达式。使用RegExp数据类型声明的语法格式如下:var 变量:RegExp=正则表达式;例如:var myPattern:RegExp=/hello/g;3.4.4 使用正则表达式使用正则表达式c1 1RegExpRegExp类的类的test()test()和和exec()exec()方法方法创建正则表达式对象后可以设置正则表达式对象的lastIndex属性,该属性指定字符串中开始进行下一次搜索的索引位置。此属性影响RegExp类的exec()和test()方法。test()方法用于检查在给定的字符串中是否包含正则表达式的匹配内容,语法格式如下:RegExp对象.test(str);参数str为给定的字符串,如果搜索到匹配项,test()方法返回true,否则返回false。例如:var re1:RegExp=/w/g;var str:String=a b c;trace(re1.lastIndex);/输出结果:0trace(re1.test(str);/输出结果:truetrace(re1.lastIndex);/输出结果:1trace(re1.test(str);/输出结果:truetrace(re1.lastIndex);/输出结果:3trace(re1.test(str);/输出结果:truetrace(re1.lastIndex);/输出结果:5trace(re1.test(str);/输出结果:false3.4.4 使用正则表达式使用正则表达式exec()方法也是用于检查在给定的字符串中是否包含正则表达式的匹配内容,但是该方法返回的是一个数组对象,其中元素0包含第一个完全匹配的子字符串,其他元素(1到n)包含与正则表达式中的括号组相匹配的子字符串,语法格式如下:RegExp对象.exec(str);返回的数组对象还有一个index属性,指明了匹配的子字符串在字符串中的字符位置。另外一个input属性,保存了输入字符串。例如:var m