Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

17fév/093

Flex ActionScript – Vérifier la validité d'une URL avec une RegExp (Expression Régulière)

Admettons que vous laissiez l'utilisateur de votre application Flex entrer une URL de son choix (l'adresse de son site web perso pour un profil par exemple). Afin de pouvoir créer un lien qui redirige vers une page valide, vous voudrez valider que cette url pointe bien vers un adresse valide. Par exemple, vous pourrez prévenir l'utilisateur s'il a écrit htp au lieu de http, ce genre de choses.

Il est possible de vérifier des chaînes (String) et leur syntaxe grâce à des expressions régulières. Si vous voulez en apprendre plus sur les RegExp, consultez ces tutoriaux AS3:

Expressions Régulières (RegExp) en ActionScript 3-1

Expressions Régulières (RegExp) en ActionScript 3-2

Maintenant que vous voyez à quoi une expression régulière, vous pouvez comprendre que pour vérifier une URL, l'expression régulière devient complexe (gestion de http/https, sous-domaines, cohérence …). J'ai trouvé sur ce blog, la RegExp permettant de valider une URL en AS3:

var regex:RegExp = /^http(s)?:\/\/((\d+\.\d+\.\d+\.\d+)|(([\w-]+\.)+([a-z,A-Z][\w-]*)))(:[1-9][0-9]*)?(\/([\w-.\/:%+@&=]+[\w- .\/?:%+@&=]*)?)?(#(.*))?$/i;

Plutôt complexe non ? Pour valider une chaîne URL, il faut donc simplement utiliser cette RegExp sur une chaîne avec la méthode test():

var url:String = "http://www.google.com";
var regex:RegExp = /^http(s)?:\/\/((\d+\.\d+\.\d+\.\d+)|(([\w-]+\.)+([a-z,A-Z][\w-]*)))(:[1-9][0-9]*)?(\/([\w-.\/:%+@&=]+[\w- .\/?:%+@&=]*)?)?(#(.*))?$/i;
trace(regex.test(url)); // returns true si l'url est valide

Vous pouvez aussi utiliser cette expression régulière dans un Validator Flex de type RegExpValidator. Le composant pourra par exemple la validation tout seul sur une champ texte présent dans un formulaire

Flex Validator: Exemple de RegExpValidator en MXML et ActionScript

Articles similaires

Commentaires (3) Trackbacks (0)
  1. Salut,

    J'aimerai savoir en tant que débutant comment appeler une autre fenêtre sur flex. C'est en quelque sorte la navigation dans flex en utilisant un objet buttonbar qui normallement doit afficher la fenêtre appelé quand je clique sur l'un des boutons.

    Merci

  2. Salut,
    ça n'a pas vraiment de lien avec cet article mais admettons ^^. Je pense que cet article devrait répondre à ta question:
    http://www.flex-tutorial.fr/2008/11/04/flex-navigator-les-composants-viewstack-et-tabnavigator/
    Sinon, n'hésites pas à utiliser la recherche de ce blog

    Fabien

  3. Sur le lien mentionné dans l'article, j'ai posté plusieurs corrections de la regex.
    Mais avant de l'utiliser en prod, j'espère que quelqu'un d'autre que moi la testera. Je suis plutôt débutant en regex, donc j'ai peut-être écrit des trucs faux :-/

    Personnellement, j'utilise l'URLValidator dispo ici : http://www.iotashan.com/index.php/2009/01/22/urlvalidator-for-as3flex/
    avec la regex de l'article + mes modifs. Et ça fonctionne plutôt bien :)


Leave a comment

(required)

Aucun trackbacks pour l'instant