Expressions Régulières (RegExp) en ActionScript 3-2
Voir la première partie de l'article sur les Expressions Régulières en ActionScript3
Les méthodes pour utiliser les expressions régulières avec des chaînes (String)
La classe RegExp contient deux méthodes: exec() et test().
En plus de ces deux méthodes de la classe RegExp, la classe String contient les méthodes match(), replace(), search(), splice().
La méthode test()
La méthode test() de la classe RegExp vérifie simplement que la chaîne contient un résultat pour l'expression régulière, comme dans l'exemple suivant:
var pattern:RegExp = /Class-\w/; var str = "Class-A"; trace(pattern.test(str)); // résultat: true
La méthode exec()
La méthode exec() de la classe RegExp vérifie la chaîne avec l'expression régulière fournie et retourne un tableau de résultats. Le tableau contient aussi une propriété index indiquant la position du début de la chaîne trouvée:
var pattern:RegExp = /\d{3}\-\d{3}-\d{4}/; //U.S phone number
var str:String = "phone: 415-555-1212";
var result:Array = pattern.exec(str);
trace (result.index, " - ", result);
// 7 - 415-555-1212
Utilisez la méthode exec() plusieurs fois pour reconnaître plusieurs sous-chaînes quand le flag g (global) est défini pour l'expression régulière:
var pattern:RegExp = /\w*sh\w*/gi;
var str:String = "She sells seashells by the seashore";
var result:Array = pattern.exec(str);
while (result != null) {
trace (result.index, "\t", pattern.lastIndex, "\t", result);
result = pattern.exec(str);
}
// résultat:
// 5 8 She
// 15 24 seashells
// 32 40 seashore
Expressions Régulières (RegExp) en ActionScript 3-1
Une expression régulière permet de décrire un motif (pattern en anglais) de caractères. Elles représentent un bon moyen pour vérifier, rechercher et manipuler des chaînes de caractères.
Par exemple, l'expression régulière suivante définit un motif tel que les lettres A, B et C sont à la suite:
/ABC/
Notez qu'une expression régulière littérale est délimitée par le caractère slash ("/").
La plupart du temps, vous voudrez utiliser les expressions régulières pour vérifier des motifs plus complexes qu'une simple chaîne de caractères. Par exemple, l'expression régulière suivante définit un motif tel que les lettres A, B et C sont consécutives et que cette séquence soit suivie par un chiffre.
/ABC\d/
Le code "\d" représente "n'importe quel chiffre". Le caractère backslash ("\") est appelé caractère d'échappement, et combiné avec le caractère qui le suit (dans ce cas la lettre "d"), il a un sens spécial dans une expression régulière. Cet article décrit ces caractères d'échappement et d'autres syntaxes des expressions régulières.
L'expression régulière suivante définit un motif de lettres ABC suivies par n'importe quel nombre de chiffres (notez l'astérisque):
/ABC\d*/
Le caractère astérisque ("*") est un metacharacter. Un metacharacter est un caractère spécial dans une expression régulière. L'astérisque est un type spécial de metachatacter appelé quantifier, qui est utilisé pour quantifier le nombre de répétition d'un caractère ou d'un groupe de caractères.
En plus de ces motifs, une expression régulières peut contenir des flags, qui spécifient comment l'expression régulière doit être vérifiée. Par exemple, l'expression régulière suivant utilise le flag "i", qui spécifie que l'expression régulière ignore la casse (différence majuscule/minuscule) dans les chaînes correspondantes:
/ABC\d*/i
Pour rechercher des motifs dans des chaînes (String) et remplacer des caractères, vous pouvez utiliser les expressions régulières comme paramètre des méthodes de la classe String. Par exemple:
var pattern:RegExp = /\d+/; // motif comprenant un ou plusieurs chiffres à la suite var str:String = "Test: 337, 4, or 57.33."; trace(str.search(pattern)); // retourne 6 : index du premier motif identifié trace(str.match(pattern)); // retourne 337 : premier motif identifié var pattern:RegExp = /\d+/g; // Le flag "g" rend la recherche globale trace(str.match(pattern)); // retourne 337,4, 57, 33: l'ensemble des résultats
Les méthodes suivantes de la classe String prennent des expressions régulières comme paramètres:
- match ()
- replace ()
- search ()
- split ()
Voir la deuxième partie de l'article sur les Expressions Régulières en ActionScript3
Flex Validator: Exemple de RegExpValidator en MXML et ActionScript
Le composant Flex RegExpValidator vous permet d'utiliser des expressions régulières pour valider une valeur. Vous pouvez utiliser le RegExpValidator pour créer tout type de validateur non standard. Le RegExpValidator requiert seulement une propriété: expression, qui représente l'expression régulière que vous voulez utiliser pour valider la donnée. En plus de celà, vous pouvez spécifier une valeur pour la propriété flags, qui peut être utilisé en combinant tous les flags des expressions régulières (i, g, m, s et x).
Voir la première partie de l'article sur les Expressions Régulières en ActionScript3
Le Validator RegExpValidator envoie des événements valid et invalid. Dans le cas d'un événement invalid, l'objet événement est de type ValidationResultEvent et il contient un tableau d'objets ValidationResult.
Dans le cas d'un événement valid, l'objet ValidationResultEvent contient un tableau d'objets RegExpValidationResult. La classe RegExpValidationResult est une sous-classe de la classe ValidationResult, contenant de nouvelles propriétés utilisées avec les expressions régulières:
- matchedIndex: Un entier contenant l'index de la chaîne correspondant à la RegExp
- matchedString: Une chaîne contenant la sous-chaîne de la chaîne de départ où le motif a été trouvé
- matchedSubStrings: Un tableau de chaînes contenant les chaînes résultantes. Si aucune sous-chaîne ne correspond, ce tableau est de longueur 0. Utilisez matchedSubStrings[0] pour accéder au premier résultat.
L' exemple suivant montre comment utiliser ce composant Flex RegExpValidator en MXML.
Flex Validator: Personnaliser les tooltip d'erreur du CreditCardValidator
Le composant Flex CreditCardValidator vous permet de valider des nombres dont le format suit les règles basiques des numéros de carte de crédit.
Lorsque la validation ne se fait pas, un tooltip s'affiche avec des valeurs par défaut:
- Le nombre contient des lettres ou autres caractères: "Invalid characters in your credit card number (Only enter numbers.)"
- Le numéro de carte de crédit est invalide: "The credit card number is invalid"
- Aucun numéro de carte spécifié: "No credit card number specified"
- Aucun type de carte n'est spécifié: "No credit card type specified or the type is not valid."
- Le numéro de carte ne contient pas le bon nombre de chiffre: "Your credit card number contains the wrong number of digits."
- Le type de carte spécifié est incorrect: "Incorrect card type specified"
Pour pouvoir personnaliser ces messages, pour les écrire en français pas exemple, l'objet CreditCardValidator possède plusieurs propriétés:
- invalidCharError: Le nombre contient des lettres ou autres caractères
- invalidNumberError: Le numéro de carte de crédit est invalide
- noNumError: Aucun numéro de carte spécifié
- noTypeError: Aucun type de carte n'est spécifié
- wrongLengthError: Le numéro de carte ne contient pas le bon nombre de chiffre
- wrongTypeError: Le type de carte spécifié est incorrect
Flex Validator: Exemple de CreditCardValidator en MXML et ActionScript
L’exemple suivant montre comment utiliser ce composant Flex CreditCardValidator avec des messages d'erreur personnalisés:
Flex Validator: Exemple de CreditCardValidator en MXML et ActionScript
Le composant Flex CreditCardValidator vous permet de valider des nombres dont le format suit les règles basiques des numéros de carte de crédit: longueur correcte, préfixe correct, et s'il passe le test de l'algorithme Luhn mod10 pour le type de carte spécifié. Même si ce Validator ne peut pas vérifier si le nombre est un numéro de carte de crédit valide, il peut réaliser les tests simples permettant de savoir si l'utilisateur n'a pas fait d'erreur dans sa saisie.
Le CreditCardValidator peut tester les cartes de type:
- American Express
- Diners Club
- Discover
- MasterCard
- Visa
Ce Validator requiert deux sources d'entrée:
- Une pour le type de carte (un RadioButton ou une ComboBox par exemple)
- Une pour la valeur du numéro de carte (un champ texte TextInput)
Flex Validator: Personnaliser les tooltip d’erreur du CreditCardValidator
L' exemple suivant montre comment utiliser ce composant Flex CreditCardValidator en MXML.





