Pour ceux qui ne connaissent pas, il existe les expressions rationnelles (regex) qui permettent une manipulation avancée d'une chaines de caractères. Très utiles pour faire des recherches ou vérifier ce que l'utilisateur entre dans un inputbox.
Attention vous devez cocher "Microsoft VBScript Regular Expressions 5.5" dans "Outils\Références".
Sytnaxe
Expressions rationnelles :
Caractère Type explication
. Point n'importe quel caractère
[...] classe de caractères tous les caractères énumérés dans la classe
[^...] classe complémentée Tous les caractères sauf ceux énumérés
^ circonflexe marque le début de la chaine, la ligne...
$ dollar marque la fin d'une chaine, ligne...
| barre verticale alternative - ou reconnaît l'un ou l'autre
(...) parenthèse utilisée pour limiter la portée d'un masque ou de l'alternative
* astérisque 0, 1 ou plusieurs occurrences
+ le plus 1 ou plusieurs occurrence
? interrogation 0 ou 1 occurrence
Fonctions
.Test() : renvoie vrai si le pattern est trouvé dans la chaine.
.Execute() : renvoie toutes les positions du pattern dans un tableau.
.Replace() : remplace le pattern par le paramètre deux.
Exemples
Supprimer toutes les balises HTML :
Extraire un mot inconnu qui en précède un autre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Public Sub RegexChaine() Dim RegEx As RegExp Set RegEx = New RegExp With RegEx .IgnoreCase = True .Global = False .Pattern = "<.*>(.*)<.*>" End With chaine$ = "Test regex VB pour <balise1>Bobby</balise1>." chaine$ = RegEx.Replace(chaine$, "$1") MsgBox (chaine$) ' Affiche : "Test regex VB pour Bobby." (sans les balises) End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Sub RegexExtraction() Dim RegEx As RegExp Set RegEx = New RegExp With RegEx .IgnoreCase = True .Global = False .Pattern = "[a-z]* Bobby" End With chaine$ = "Test regex VB de Bobby le buveur de whisky." chaine$ = RegEx.Replace(chaine$, "$1") MsgBox (chaine$) ' Affiche : "de Bobby" End Sub
Exemples de regex PHP
Pour avoir un numéro de téléphone français valide :
#^0[1-68]([-. ]?\d{2}){4}$#
Pour avoir un email valide :
#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#
Pour faire une recherche sur une base de donnée (ici MySql) :
SELECT nom FROM visiteurs WHERE ip REGEXP '^84\.254(\.[0-9]{1,3}){2}$'
Sélectionne tous les noms de la table visiteurs où l'ip commence par "84.254" et se termine par 2 autres nombres de 1 à 3 chiffres (ex : 84.254.6.177).
Partager