前端之家收集整理的这篇文章主要介绍了
AS3字符串正则表达式,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一、String.match(pattern:*);//将指定的pattern
与字符串匹配,pattern可以是正则表达式或者字符串,如果是字符串就直接匹配。
下面是它文档中的说明:
参数
|
pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。 如果pattern 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。 |
返回
|
Array — 一个字符串数组,其中包括与指定的pattern 匹配的字符串中的所有子字符串。 如果pattern 是正则表达式,为了返回一个具有多个匹配子字符串的数组,必须在该正则表达式中设置g (全局)标志:
- 如果未设置
g (全局)标志,则返回的数组包含的匹配项将不多于一项,且正则表达式的lastIndex 属性保持不变。
- 如果已设置
g (全局)标志,则该方法从字符串的起始处(索引位置 0)开始搜索。 如果匹配的子字符串为空字符串(正则表达式为/x*/ 时可能出现此情况),则该方法将此空字符串添加到匹配项数组,然后在下一个索引位置继续搜索。 该方法完成后,将正则表达式的lastIndex 属性设置为 0。
如果未找到匹配项,该方法返回null 。 如果未传递值(或传递了未定义的值)作为pattern 参数,则该方法返回null 。 例子: //下面讨论的是flash正则表达式规则和功能 /* 由于'['和']'符号都是元符号,所以这里要用到转义符号 来将它们转义为具体的符号 在flash中用'\'符号来表示,因为'/'符号以被系统使用了 */ //如果输入的字符没有元符号或者元序列等特殊符号, //那么就是单词匹配。 var str:String="你是[雷龙]本人吧,[小龙]。"; //vartrace(/\[雷.\]/);//打印雷龙 var str2:Array=str.match(/雷龙/g); trace(str2.length); trace(str2); //1 //雷龙 //例子2,用'i'这个参数,'i'这个参数表示不区分大小写 /* 根据下面的'i'这个参数的使用总结出这个规律: 使用'i'这个参数后,正则表达式的参数也不区分大小写 */ var num:String="First,you are HUMN,But you not SAME." var str3:Array=num.match(/.h.m./i); if(str3.length!=0){ trace("i="+str3); } //i= HUMN String.replace(); 下面是他们文档中的说明: 相对于字符串匹配指定的pattern 并返回一个新字符串,其中的第一个pattern 匹配项被替换为repl 所指定的内容。pattern 参数可以是字符串或正则表达式。repl 参数可以是字符串或函数;如果是函数,将插入由该函数返回的字符串以替换匹配项。 未修改原始字符串。 在下面的示例中,仅替换“sh”(区分大小写)的第一个实例:
var myPattern:RegExp = /sh/; var str:String = "She sells seashells by the seashore."; trace(str.replace(myPattern,"sch")); // She sells seaschells by the seashore.
在下面的示例中,替换“sh”(区分大小写)的所有实例,这是因为在正则表达式中设置了g (全局)标志:
var myPattern:RegExp = /sh/g; var str:String = "She sells seashells by the seashore."; trace(str.replace(myPattern,"sch")); // She sells seaschells by the seaschore.
在下面的示例中,替换“sh”的所有实例,这是因为在正则表达式中设置了g (全局)标志,并且匹配时不区分大小写,因为设置了i (忽略大小写)标志:
var myPattern:RegExp = /sh/gi; var str:String = "She sells seashells by the seashore."; trace(str.replace(myPattern,"sch")); // sche sells seaschells by the seaschore.
参数
|
pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。 如果指定的pattern 参数是除字符串或正则表达式以外的任何其它对象,将对该参数应用toString() 方法,并使用结果字符串作为pattern 来执行replace() 方法。 |
|
|
repl:Object — 通常是以插入的字符串替换匹配内容。 但也可以指定一个函数作为此参数。 如果指定一个函数,将插入由该函数返回的字符串来替换匹配内容。 如果指定一个字符串作为repl 参数,并指定一个正则表达式作为pattern 参数,则可以在repl 字符串中使用以下特殊的$ 替换代码:
$ 代码 |
替换文本 |
$$ |
$ |
$& |
匹配的子字符串。 |
$` |
字符串中位于匹配的子字符串前面的部分。 请注意,此代码使用左侧直单引号字符 (`),而不是直单引号字符 (') 或左侧弯单引号字符 (‘)。 |
$' |
字符串中位于匹配的子字符串后面的部分。 请注意,此代码使用直单引号字符 (')。 |
$ n |
第n个捕获的括号组匹配项,其中n是 1-9 之间的数字,而且$ n后面没有十进制数字。 |
$ nn |
第nn个捕获的括号组匹配项,其中nn是一个十进制的两位数 (01-99)。 如果未定义第nn个捕获内容,则替换文本为空字符串。 |
例如,下面说明了如何使用$2 和$1 替换代码,它们分别表示匹配的第一个和第二个捕获组:
var str:String = "flip-flop"; var pattern:RegExp = /(\w+)-(\w+)/g; trace(str.replace(pattern,"$2-$1")); // flop-flip
指定一个函数作为repl 时,replace() 方法将以下参数传递给该函数:
- 字符串的匹配部分。
- 任何捕获到的括号组匹配项都将作为下一组参数提供。 按这种方式传递的参数数目因括号匹配项的数目而异。 您可以通过检查函数代码中的
arguments.length - 3 来确定括号匹配项的数目。
- 字符串中匹配开始的索引位置。
- 完整的字符串。
例如,请看以下例子:
var str1:String = "abc12 def34"; var pattern:RegExp = /([a-z]+)([0-9]+)/; var str2:String = str1.replace(pattern,replFN); trace(str2); // 12abc 34def function replFN():String { return arguments[2] + arguments[1]; }
对replace() 方法的调用使用一个函数作为repl 参数。 匹配两次正则表达式 (/([a-z]([0-9]/g )。 第一次,模式与子字符串"abc12" 匹配,并将以下参数列表传递给该函数:
{"abc12","abc","12","abc12 def34"}
第二次,模式与子字符串"def23" 匹配,并将以下参数列表传递给该函数:
{"def34","def","34",6,"abc123 def34"}
|
返回
例子: /* String.replace(RegExp,Object); 这个函数指定正则表达式的替换功能 如果RegExp是一个字符串(不包括元符号等特殊符号),Object可以是任何对象, 也可以是由函数返回的对象形式,通常这个数据返回的是字符串, 如果RegExp是一个字符串,那么就是纯替换,首先程序会查找String的RegExp参数 中的数据,之后就用Object来替换。也就是说把RegEx的内容用Object来替换 看看下面的例子 */ //实例1 var s:String="She sells seashells by the seashore."; trace("运行前:"+s.replace(/sh/g,"sch")); //实例2 var s2:String="She sells seashells by the seashore.She is my wife"; trace("运行前:"+s2.replace(/S.e/g,"He"));//使用正则表达式 //运行前:She sells seaschells by the seaschore. //前:He sells seashells by the seashore.He is my wife String.seach(pattern:*);
AS3function search(pattern:*):int
Player 版本 : |
Flash Player 9 |
搜索指定的pattern 并返回第一个匹配子字符串的索引。 如果没有匹配的子字符串,该方法返回-1 。
参数
|
pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。 如果pattern 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。 请注意,如果指定正则表达式,该方法将忽略此正则表达式的全局标志(“g”),并忽略此正则表达式的lastIndex 属性(并保持其值不变)。 如果传递未定义的值(或未传递值),则该方法返回-1 。 |
返回
|
int — 第一个匹配子字符串的索引,如果没有匹配项,则为-1 。 请注意,字符串的索引从零开始;字符串的第一个字符位于索引 0 处,最后一个字符位于string.length - 1 处。 |
|
例子:
/*
String.search(正则表达式:字符串);//返回第一个匹配子字符串的索引
String.split(正则表达式:字符串);//将String字符串进行拆分,由里面的参数位置来拆分,
但不包括里面的参数。
*/
var ss:String="here is my home,she is my wife.";
trace("运行后="+ss.search(/my/g));//返回第一个与'my'匹配的ss索引
//运行后=8
String.split(delimiter:*,limit:Number= 0x7fffffff):Array;
将 String 对象拆分为一个子字符串数组,方法是在所有出现指定delimiter
参数的位置进行拆分。
如果delimiter
参数是正则表达式,即使向后跟踪可以找到与该位置匹配的非空子字符串,也仅考虑字符串给定位置处的第一个匹配项。 例如:
var str:String = "ab"; var results:Array = str.split(/a*?/); // results == ["","b"] results = str.split(/a*/); // results == ["","b"].)
如果delimiter
参数是包含分组圆括号的正则表达式,则每次匹配delimiter
时,会将分组圆括号的结果(包括任何未定义的结果)连接到输出数组中。 例如
var str:String = "Thi5 is a tricky-66 example."; var re:RegExp = /(\d+)/; var results:Array = str.split(re); // results == ["Thi","5"," is a tricky-","66"," example."]
如果指定limit
参数,返回的数组中具有的元素数将不多于指定数目。
如果delimiter
是空字符串、空正则表达式或者可以匹配空字符串的正则表达式,则字符串中的每一个字符都将输出为数组中的一个元素。
如果未定义delimiter
参数,则会将整个字符串放入返回的数组的第一个元素中。
参数
|
delimiter:* — 指定拆分此字符串的位置的模式。 此模式可以是任何类型的对象,但通常为字符串或正则表达式。 如果delimiter 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。 |
|
|
limit:Number (default =0x7fffffff )— 要放入数组中的最大项数。 默认为允许的最大值。 |
返回
例子:
String.search(正则表达式:字符串);//返回第一个匹配子字符串的索引
String.split(正则表达式:字符串);//将String字符串进行拆分,由里面的参数位置来拆分,
但不包括里面的参数。
*/
var ss:String="here is my home,she is my wife.";
trace("运行后="+ss.search(/my/g));//返回第一个与'my'匹配的ss索引
trace(ss.split(/is/g,2));
//运行后=8 //here,my home,she //split,拆分,例如有一句话:你是那个谁是不是。假如从'谁'这个字来拆分,得:你是那个,是不是。