dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>flex>文章内容
AS3中使用的正则表达式
来源: 作者:
一、定义方式,可以有两种
var pattern1:RegExp =
new RegExp("test-\\d", "i");
var pattern2:RegExp =
/test-\d/i;

1)
使用new来新建一个RegExp对象,其中参数为1)表达式字符串2)表达式的参数,这种方式如果要用\,一定要用\\来转义。
2)
直接采用/形式,以把表达式的内容写到/……./里面,在后面跟上表达式的参数,参数字符可以同时添加多个,例如:/………/gi
二、参数介绍
1)Dotall属性,用s字符表示参数,指定字符(.)在表达式里是不是匹配新行,如果使用了s参数,那就表示dotall表示真
例:
var str:String =
"<p>Hello\n"
                  +
"again</p>"
                  +
"<p>Hello</p>";           
var pattern:RegExp =
/<p>.*?<\/p>/;
trace(pattern.dotall) // false
trace(pattern.exec(str)); // <p>Hello</p>
pattern =
/<p>.*?<\/p>/s;
trace(pattern.dotall) // true
trace(pattern.exec(str));

2)
Extended属性,用x参数表示,指是否在表达式定义的时候是否忽略空格
例:var rePhonePattern1:RegExp =
/\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}/;
var str:String =
"The phone number is (415)555-1212.";

trace(rePhonePattern1.extended) // false
trace(rePhonePattern1.exec(str)); // (415)555-1212

var rePhonePattern2:RegExp =
/ \d{3}-\d{3}-\d{4}
|  \( \d{3} \) \ ? \d{3}-\d{4}
/x;
trace(rePhonePattern2.extended) // true
trace(rePhonePattern2.exec(str)); // (415)555-1212


3)global属性,用g参数表示,指是否用表达式在匹配以后在下次匹配的时候是从头再来还是从上次匹配过的地方开始,其lastIndex属性会保存起来。
例:
var pattern:RegExp =
/foo\d/;
var str:String =
"foo1 foo2";
trace(pattern.global); // false
trace(pattern.exec(str)); // foo1
trace(pattern.lastIndex); // 0
trace(pattern.exec(str)); // foo1

pattern =
/foo\d/g;
trace(pattern.global); // true
trace(pattern.exec(str)); // foo1
trace(pattern.lastIndex); // 4
trace(pattern.exec(str)); // foo2

4)
ignoreCase属性,用i参数表示,指表达式匹配的时候是否区别大小写。
例:
var pattern:RegExp =
/bob/;
var str:String =
"Bob bob";
trace(pattern.ignoreCase); // false
trace(pattern.exec(str)); // bob

pattern =
/bob/i;
trace(pattern.ignoreCase); // true
trace(pattern.exec(str)); // Bob

5)lastIndex属性,指定下次查询的起始位置,这个属性影响两个方法exec()和test(),match(),replace(),search()方法是忽略这个属性的,他们总是从头开始的。
这个属性要和global结合使用,当global为true时,执行exec()和test()后,lastIndex属性会被设置为下一个字符,如果是false,则会从头开始。
例:
6)multiline属性,用m参数表示,指表达式匹配的时候用字符(^)和($)分别表示在之前或之后有新的一行。
例:
var pattern:RegExp =
/^bob/;
var str:String =
"foo\n"
                +
"bob";
trace(pattern.multiline); // false
trace(pattern.exec(str)); // null

pattern =
/^bob/m;
trace(pattern.multiline); // true
trace(pattern.exec(str)); // bob

7)source属性,返回表达式的定义字符串。
例:
var re1:RegExp =
/aabb/gi;
trace (re1.source); // aabb

var re2:RegExp =
new RegExp("x+y*", "i");
trace(re2.source); // x+y*

三、方法介绍
      1)
Exec()方法:

i.
输入:传入一个String类型的参数,表示要查询的字符串。
 
ii.  返回:如果没有匹配到就返回null,否则返回一个Object对象。
    这个Object对象的属性:
        a)
一个Array(数组),元素0包含一个匹配得到的子串,1到n包含,其中定义的组所匹配的字符子串
        b) Index匹配子串在字符串里的位置
        c)
Input输入的原始字符串。
例:
var myPattern:RegExp =
/(\w*)sh(\w*)/ig; 
        var str:String =
"She sells seashells by the seashore";
        var result:Object = myPattern.exec(str);
        trace(result);

输出:

    * result[0]是”she”
    *

      result[1]是一个空串(第一个\w是匹配到空的子串)
    *

      result[2]是”e”
    *

      result.index是0
    *

      result.input是” She sells seashells by the seashore”

设置了g(global)属性的例子:var myPattern:RegExp =
/(\w*)sh(\w*)/ig;
      var str:String =
"She sells seashells by the seashore";
      var result:Object = myPattern.exec(str);
                  while (result !=
null) {
            trace ( result.index, "\t", result);
            result = myPattern.exec(str);
        }


      输出:

0
She,,e

10
seashells,sea,ells

27
seashore,sea,ore
    2)
Test()方法:

i.
输入:传入一个String类型的参数,表示要查询的字符串。

ii.
返回:如果匹配返回true,否则返回false.
例: var re1:RegExp =
/\w/g;
var str:String =
"a b c";
trace (re1.lastIndex); // 0
trace (re1.test(str)); // true
trace (re1.lastIndex); // 1
trace (re1.test(str)); // true
trace (re1.lastIndex); // 3
trace (re1.test(str)); // true
trace (re1.lastIndex); // 5
trace (re1.test(str)); // false

四、综合例子:package {

    import flash.display.Sprite;

    public class RegExpExample extends Sprite {       
        public function RegExpExample() {           
            var formalGreeting:String =
"Hello, John Smith.";
            trace(informalizeGreeting(formalGreeting));    // Hi, John.

            var validEmail:String =
"name@domain.com";
            trace(validateEmail(validEmail));        // true
           
            var invalidEmail:String =
"foo";
            trace(validateEmail(invalidEmail)); // false
           
            var validPhoneNumber:String =
"415-555-1212";
            trace(validatePhoneNumber(validPhoneNumber));    // true
           
            var invalidPhoneNumber:String =
"312-867-530999";
            trace(validatePhoneNumber(invalidPhoneNumber)); // false
        }
        private function informalizeGreeting(str:String):String {
            var pattern:RegExp =
new RegExp("hello, (\\w+) \\w+", "i");
            return str.replace(pattern, "Hi, $1");
        }
        private function validateEmail(str:String):Boolean {
            var pattern:RegExp =
/(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
            var result:Object = pattern.exec(str);
            if(result ==
null) {
                return
false;
            }
            return
true;
        }
        private function validatePhoneNumber(str:String):Boolean {
            var pattern:RegExp =
/^\d{3}-\d{3}-\d{4}$/;
            var result:Object = pattern.exec(str);
            if(result ==
null) {
                return
false;
            }
            return
true;
        }
    }
}

上一篇:一个flex正则表达式的例子   下一篇:JSP+JavaBean分页(一)— 源码下载
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Flex 打印DataGrid内容
·Flex中的闪烁效果
·flex: 使用setInterval 制作定时
·FLEX优秀开源项目介绍
·AS3中的正则表达式
·flex确认提示(confirm window)
·Flex RemoteObject类参考
·flex:RemoteObject 和 DataGrid
·AS3的面向对象特点概述
·利用AS3的图形界面开发及资源管
·AS3.0 访问属性
·AS3.0强大的事件机制
  相关文章
·一个flex正则表达式的例子
·flex文件上传
·FLASH CS3/AS3.0教程汇总(2007-7
·flex文件下载
·AS3.0强大的事件机制
·定义Flex程序进度条
·AS3.0 访问属性
·利用AS3的图形界面开发及资源管
·AS3的面向对象特点概述
·flex:RemoteObject 和 DataGrid
·Flex RemoteObject类参考
·Flex 与 javascript 交互
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763