Flash / Flex / ActionScript/Regular Expressions/RegExp
Содержание
- 1 Case-insensitive, you can add the i flag:
- 2 Creating a Regular Expression Object
- 3 invert a character class by using a caret (^) immediately after the open bracket ([).
- 4 Matching Using a Regular Expression Object
- 5 (*) quantifier matches zero or more times:
- 6 Quantifiers
- 7 RegExp("(A|BC)* *(A);*(B)* *(C)* *(A|B|C)*", "i")
- 8 Regular expression /\w/ is created in ActionScript
- 9 String Methods and Regular Expressions
- 10 To escape a character, simply preface it with a backslash (\). This goes for the backslash character as well.
- 11 To flag it to match globally and multiline, the following will work:
- 12 To know whether at least one match exists.
- 13 To match an optional character or sequence, use the question mark quantifier (?).
- 14 Use ranges with the dash character (-), and you can have multiple ranges in one character class, as well as combine ranges with single characters
- 15 Use the exec() method.
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>