[AS3]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="你是[雷龙]本人吧,[小龙]。";
//var trace(/\[雷.\]/);//打印雷龙
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
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例