Flash / Flex / ActionScript/Regular Expressions/RegExp

Материал из Web эксперт
Перейти к: навигация, поиск

Case-insensitive, you can add the i flag:

   <source lang="java">


package{

 import flash.display.Sprite;
  import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("abc","i");
       trace(reCase.test("aBc"));  
   }
 }

}

       </source>
   
  


Creating a Regular Expression Object

   <source lang="java">


package{

 import flash.display.Sprite;
 import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("abc");
       trace(reCase.test("aBc"));  
       reCase.rupile("abc", "i");
       trace(reCase.test("aBc"));  
   }
 }

}

       </source>
   
  


invert a character class by using a caret (^) immediately after the open bracket ([).

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       trace("roger dodger".match(/[^oge\s]/g)); //r,r,d,d,r
   }
 }

}

       </source>
   
  


Matching Using a Regular Expression Object

   <source lang="java">

package{

 import flash.display.Sprite;
 import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("abc");
       trace(reCase.test("aBc"));  // Displays: false;
   }
 }

}

       </source>
   
  


(*) quantifier matches zero or more times:

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       trace("a thousand thousandss!".match(/thousands*/g)); //thousand,thousandss
   }
 }

}

       </source>
   
  


Quantifiers

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       trace(/\w+:\s*\$\d+/.test("soup:          $40")); //true
   }
 }

}

       </source>
   
  


RegExp("(A|BC)* *(A);*(B)* *(C)* *(A|B|C)*", "i")

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("(A|BC)* *(A);*(B)* *(C)* *(A|B|C)*", "i");
       var aMatch:Array = reCase.exec("action");
       trace(aMatch);
       aMatch = reCase.exec("A B C");
       trace(aMatch);
       aMatch = reCase.exec("B C");
       trace(aMatch);
       aMatch = reCase.exec("A B C");
       trace(aMatch);
       aMatch = reCase.exec("A C B");
       trace(aMatch);
   }
 }

}

       </source>
   
  


Regular expression /\w/ is created in ActionScript

   <source lang="java">

package{

 import flash.display.Sprite;
      import flash.utils.*;  
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("\\w"); 
       trace(reCase.test("aBc"));  
   }
 }

}

       </source>
   
  


String Methods and Regular Expressions

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("(\\w)+", "g");
       var sVal = new String("abc def ghi");
       var aMatches:Array = sVal.match(reCase);
       trace(aMatches.toString());
   }
 }

}

       </source>
   
  


To escape a character, simply preface it with a backslash (\). This goes for the backslash character as well.

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       trace("c:\\windows\\"); //c:\windows\
   }
 }

}

       </source>
   
  


To flag it to match globally and multiline, the following will work:

   <source lang="java">

package{

 import flash.display.Sprite;
    import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("abc", "gm"); 
       trace(reCase.test("aBc"));  
   }
 }

}

       </source>
   
  


To know whether at least one match exists.

   <source lang="java">

package{

 import flash.display.Sprite;
 import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var sEmail:String = new String("someone@someserver.ru");
       var reEmail:RegExp = new RegExp("^([\\w\\-\\.]+) ;@(([\\w\\-]{2,}\\.)+[\\w\\-]{2,3})$");
       trace(reEmail.test(sEmail));
   }
 }

}

       </source>
   
  


To match an optional character or sequence, use the question mark quantifier (?).

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var betterPhoneNumber:RegExp = /\(?\d{3}\)?-?\d{3}-?\d{4}/;
       trace(betterPhoneNumber.test("(703)222-1234")); //true
       trace(betterPhoneNumber.test("310-222-1515")); //true
       trace(betterPhoneNumber.test("7242229090")); //true
   }
 }

}

       </source>
   
  


Use ranges with the dash character (-), and you can have multiple ranges in one character class, as well as combine ranges with single characters

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       trace("abcdefghijklmnopqrstuvwxyz".match(/[a-cmx-z]/g)); //a,b,c,m,x,y,z
   }
 }

}

       </source>
   
  


Use the exec() method.

   <source lang="java">

package{

 import flash.display.Sprite;
 import flash.utils.*;
 public class Main extends Sprite{
   public function Main(){
       var reCase:RegExp = new RegExp("abc");
       var sVal:String = new String("aBcdefabCdefABC");
       var aMatch:Array = reCase.exec(sVal);
       aMatch = reCase.exec(sVal);
   }
 }

}

       </source>