AS3中的正则表达式(原创)

  AS3 中的正则表达式
一、 定义方式,可以有两种
None.gif var  pattern1:RegExp  =   new  RegExp( " test-\\d " " i " );
None.gif
var  pattern2:RegExp  =   / test - \d / i;
None.gif

1)  使用 new 来新建一个 RegExp 对象,其中参数为 1 )表达式字符串 2 )表达式的参数,这种方式如果要用 \, 一定要用 \\ 来转义。
2)  直接采用 / 形式,以把表达式的内容写到 /……./ 里面,在后面跟上表达式的参数,参数字符可以同时添加多个,例如: /………/gi
二、 参数介绍
1) Dotall 属性,用 s 字符表示参数,指定字符( . )在表达式里是不是匹配新行,如果使用了 s 参数,那就表示 dotall 表示真
例:
None.gif var  str:String  =   " <p>Hello\n "
None.gif                  
+   " again</p> "
None.gif                  
+   " <p>Hello</p> " ;            
None.gif
var  pattern:RegExp  =   /< p > . *?< \ / p >/ ;
None.giftrace(pattern.dotall) 
//  false
None.gif
trace(pattern.exec(str));  //  <p>Hello</p>
None.gif
pattern  =   /< p > . *?< \ / p >/ s;
None.giftrace(pattern.dotall) 
//  true
None.gif
trace(pattern.exec(str)); 
None.gif
2) Extended 属性,用 x 参数表示,指是否在表达式定义的时候是否忽略空格
例:
ExpandedBlockStart.gif ContractedBlock.gif var  rePhonePattern1:RegExp  =   / \d dot.gif {3} - \d dot.gif {3} - \d dot.gif {4} | \(\d dot.gif {3} \)\s ? \d dot.gif {3} - \d dot.gif {4} /
None.gif
var  str:String  =   " The phone number is (415)555-1212. " ;
None.gif 
None.giftrace(rePhonePattern1.extended) 
//  false
None.gif
trace(rePhonePattern1.exec(str));  //  (415)555-1212
None.gif
 
ExpandedBlockStart.gifContractedBlock.gif
var  rePhonePattern2:RegExp  =   /  \d dot.gif {3} - \d dot.gif {3} - \d dot.gif {4}   |    \( \d dot.gif {3}  \) \  ?  \d dot.gif {3} - \d dot.gif {4}   / x; 
None.giftrace(rePhonePattern2.extended) 
//  true
None.gif
trace(rePhonePattern2.exec(str));  //  (415)555-1212
None.gif
 
None.gif

3) global 属性,用 g 参数表示,指是否用表达式在匹配以后在下次匹配的时候是从头再来还是从上次匹配过的地方开始,其 lastIndex 属性会保存起来。
例:
None.gif var  pattern:RegExp  =   / foo\d /
None.gif
var  str:String  =   " foo1 foo2 " ;
None.giftrace(pattern.global); 
//  false
None.gif
trace(pattern.exec(str));  //  foo1
None.gif
trace(pattern.lastIndex);  //  0
None.gif
trace(pattern.exec(str));  //  foo1
None.gif
 
None.gifpattern 
=   / foo\d / g;
None.giftrace(pattern.global); 
//  true
None.gif
trace(pattern.exec(str));  //  foo1
None.gif
trace(pattern.lastIndex);  //  4
None.gif
trace(pattern.exec(str));  //  foo2
None.gif
4) ignoreCase 属性,用 i 参数表示,指表达式匹配的时候是否区别大小写。
例:
None.gif var  pattern:RegExp  =   / bob /
None.gif
var  str:String  =   " Bob bob " ;
None.giftrace(pattern.ignoreCase); 
//  false
None.gif
trace(pattern.exec(str));  //  bob
None.gif
 
None.gifpattern 
=   / bob / i;
None.giftrace(pattern.ignoreCase); 
//  true
None.gif
trace(pattern.exec(str));  //  Bob
None.gif
5) lastIndex 属性,指定下次查询的起始位置,这个属性影响两个方法 exec() 和 test() , match() , replace() , search() 方法是忽略这个属性的,他们总是从头开始的。
这个属性要和 global 结合使用,当 global 为 true 时,执行 exec() 和 test() 后, lastIndex 属性会被设置为下一个字符,如果是 false ,则会从头开始。
例:
6) multiline 属性,用 m 参数表示,指表达式匹配的时候用字符( ^ )和( $ )分别表示在之前或之后有新的一行。
例:
None.gif var  pattern:RegExp  =   /^ bob /
None.gif
var  str:String  =   " foo\n "
None.gif                
+   " bob " ;
None.giftrace(pattern.multiline); 
//  false
None.gif
trace(pattern.exec(str));  //  null
None.gif
 
None.gifpattern 
=   /^ bob / m;
None.giftrace(pattern.multiline); 
//  true
None.gif
trace(pattern.exec(str));  //  bob
None.gif
7) source 属性,返回表达式的定义字符串。
例:
None.gif var  re1:RegExp  =   / aabb / gi;
None.giftrace (re1.source); 
//  aabb
None.gif
 
None.gif
var  re2:RegExp  =   new  RegExp( " x+y* " " i " );
None.giftrace(re2.source); 
//  x+y*
None.gif
三、 方法介绍
       1)  Exec() 方法: 
                        i.  输入:传入一个 String 类型的参数,表示要查询的字符串。
                        ii.   返回:如果没有匹配到就返回 null ,否则返回一个 Object 对象。
     这个 Object 对象的属性:
        a)  一个 Array (数组),元素 0 包含一个匹配得到的子串, 1 到 n 包含,其中定义的组所匹配的字符子串
        b) Index 匹配子串在字符串里的位置
        c)  Input 输入的原始字符串。
例:
None.gif var  myPattern:RegExp  =   / (\w * )sh(\w * ) / ig;   
None.gif         
var  str:String  =   " She sells seashells by the seashore " ;
None.gif         
var  result:Object  =  myPattern.exec(str);
None.gif         trace(result);
None.gif

输出:
  • result[0]是”she”
  • result[1]是一个空串(第一个\w是匹配到空的子串)
  • result[2]是”e”
  • result.index是0
  • result.input是” She sells seashells by the seashore”

设置了g(global)属性的例子:

None.gif var  myPattern:RegExp  =   / (\w * )sh(\w * ) / ig; 
None.gif       
var  str:String  =   " She sells seashells by the seashore " ;
None.gif       
var  result:Object  =  myPattern.exec(str);
ExpandedBlockStart.gifContractedBlock.gif                  
while  (result  !=   null dot.gif {
InBlock.gif             trace ( result.index, 
"\t", result);
InBlock.gif             result 
= myPattern.exec(str);
ExpandedBlockEnd.gif        }

None.gif
      输出:
            0      She,,e
            10     seashells,sea,ells
            27     seashore,sea,ore
   
2)        Test() 方法:
                        i.              输入:传入一个 String 类型的参数,表示要查询的字符串。
                        ii.              返回:如果匹配返回 true ,否则返回 false.
例:
None.gif var  re1:RegExp  =   / \w / g;
None.gif
var  str:String  =   " a b c " ;
None.giftrace (re1.lastIndex); 
//  0
None.gif
trace (re1.test(str));  //  true
None.gif
trace (re1.lastIndex);  //  1
None.gif
trace (re1.test(str));  //  true
None.gif
trace (re1.lastIndex);  //  3
None.gif
trace (re1.test(str));  //  true
None.gif
trace (re1.lastIndex);  //  5
None.gif
trace (re1.test(str));  //  false
None.gif

四、 综合例子:
ExpandedBlockStart.gif ContractedBlock.gif package  dot.gif {
InBlock.gif
InBlock.gif    import flash.display.Sprite;
InBlock.gif 
ExpandedSubBlockStart.gifContractedSubBlock.gif    public class RegExpExample extends Sprite 
dot.gif{        
ExpandedSubBlockStart.gifContractedSubBlock.gif        public 
function RegExpExample() dot.gif{            
InBlock.gif            
var formalGreeting:String = "Hello, John Smith.";
InBlock.gif            trace(informalizeGreeting(formalGreeting));    
// Hi, John.
InBlock.gif
 
InBlock.gif            
var validEmail:String = "name@domain.com";
InBlock.gif            trace(validateEmail(validEmail));        
// true
InBlock.gif
            
InBlock.gif            
var invalidEmail:String = "foo";
InBlock.gif            trace(validateEmail(invalidEmail)); 
// false
InBlock.gif
            
InBlock.gif            
var validPhoneNumber:String = "415-555-1212";
InBlock.gif            trace(validatePhoneNumber(validPhoneNumber));    
// true
InBlock.gif
            
InBlock.gif            
var invalidPhoneNumber:String = "312-867-530999";
InBlock.gif            trace(validatePhoneNumber(invalidPhoneNumber)); 
// false
ExpandedSubBlockEnd.gif
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        private 
function informalizeGreeting(str:String):String dot.gif{
InBlock.gif            
var pattern:RegExp = new RegExp("hello, (\\w+) \\w+""i");
InBlock.gif            
return str.replace(pattern, "Hi, $1");
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        private 
function validateEmail(str:String):Boolean dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var pattern:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\wdot.gif{2,4}+/;
InBlock.gif            
var result:Object = pattern.exec(str);
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(result == nulldot.gif{
InBlock.gif                
return false;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return true;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        private 
function validatePhoneNumber(str:String):Boolean dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var pattern:RegExp = /^\ddot.gif{3}-\ddot.gif{3}-\ddot.gif{4}$/;
InBlock.gif            
var result:Object = pattern.exec(str);
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(result == nulldot.gif{
InBlock.gif                
return false;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return true;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

转载于:https://www.cnblogs.com/FireYang/archive/2006/10/23/537192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值