Contrôler une url
CrazyCat » 19/ 02/2009 13:20
Expressions régulières
|
Envoyer à un ami |
Fil des commentaires de ce billet
Le but de cette expression régulière est de contrôler la validité (syntaxique) d'une URL.
Pour celà , nous partons des postulats suivants:
- une url commence par http, https ou ftp (scheme),
- elle peut contenir un nom d'utilisateur, et si tel est le cas elle peut aussi contenir un mot de passe,
- le nom d'utilisateur fait au moins 3 caractères (user),
- le mot de passe fait au moins 3 caractères et ne peut contenir ni espace ni @ (password),
- le reste (l'url elle-même) peut contenir tout caractère de mot ainsi que certains caractères particuliers et des / (uri),
- la casse n'est pas importante (www.g33k-zone.org est identique à wWw.g33k-ZONE.oRg).
Ceci nous donne:
!^ ; scheme (http|https|ftp) \:\/\/ ( ; user ([\w\-\.]{3,}) ; password (\:([^\s@]{3,}))?@ )? ; uri ([\w\.\:\-\/#\?=\~\&]{2,}\/?\b) $! ; version complète !^(http|https|ftp)\:\/\/(([\w\-\.]{3,})(\:([\S]{3,}))?@)?([\w.:\-\/#\?=\~\&]{2,}\/?\b)$!
Ce masque vérifie que la chaîne envoyée est bien une url, en aucun cas il ne détecte les urls dans une chaîne plus grande. Pour celà , il faut le modifier très simplement en retirant la contrainte de début (^) et de fin ($) et en englobant l'expression entre des parenthèses (pour pouvoir retourner l'intégralité de la chaîne qui correspond).
Ce qui donne:
((http|https|ftp)\:\/\/(([\w\-\.]{3,})(\:([\S]{3,}))?@)?([\w.:\-\/#\?=\~\&]{2,}\/?\b))