VBScript - Expressions régulières

Les expressions régulières sont une séquence de caractères qui forme un modèle, qui est principalement utilisé pour la recherche et le remplacement. Le but de la création d'un modèle est de faire correspondre des chaînes spécifiques, afin que le développeur puisse extraire des caractères en fonction de conditions et remplacer certains caractères.

Objet RegExp

L'objet RegExp aide les développeurs à faire correspondre le modèle de chaînes et les propriétés et méthodes nous aident à travailler facilement avec les expressions régulières. Il est similaire à RegExp en JavaScript

Propriétés

  • Pattern - La méthode Pattern représente une chaîne qui est utilisée pour définir l'expression régulière et elle doit être définie avant d'utiliser l'objet expression régulière.

  • IgnoreCase- Une propriété booléenne qui représente si l'expression régulière doit être testée par rapport à toutes les correspondances possibles dans une chaîne si elle est vraie ou fausse. Si elle n'est pas spécifiée explicitement, la valeur IgnoreCase est définie sur False.

  • Global- Une propriété booléenne qui représente si l'expression régulière doit être testée par rapport à toutes les correspondances possibles dans une chaîne. S'il n'est pas spécifié explicitement, la valeur globale est définie sur False.

Méthodes

  • Test(chaîne de recherche) - La méthode Test prend une chaîne comme argument et renvoie True si l'expression régulière peut être mise en correspondance avec la chaîne, sinon False est renvoyé.

  • Replace(chaîne de recherche, chaîne de remplacement) - La méthode Replace prend 2 paramètres. Si la recherche réussit, elle remplace cette correspondance par la chaîne de remplacement et la nouvelle chaîne est renvoyée. S'il n'y a pas de correspondance, la chaîne de recherche d'origine est renvoyée.

  • Execute(chaîne de recherche) - La méthode Execute fonctionne comme Replace, sauf qu'elle renvoie un objet de collection Matches, contenant un objet Match pour chaque correspondance réussie. Il ne modifie pas la chaîne d'origine.

Correspond à l'objet de collection

L'objet de collection Matches est renvoyé à la suite de la méthode Execute. Cet objet de collection peut contenir zéro ou plusieurs objets Match et les propriétés de cet objet sont en lecture seule.

  • Count - La méthode Count représente le nombre d'objets de correspondance dans la collection.

  • Item - La méthode Item permet d'accéder aux objets de correspondance à partir de l'objet de collections de correspondances.

Match Object

L'objet Match est contenu dans l'objet de collection matches. Ces objets représentent la correspondance réussie après la recherche d'une chaîne.

  • FirstIndex- Il représente la position dans la chaîne d'origine où la correspondance s'est produite. Cet index est basé sur zéro, ce qui signifie que la première position dans une chaîne est 0.

  • Length - Une valeur qui représente la longueur totale de la chaîne correspondante.

  • Value- Une valeur qui représente la valeur ou le texte correspondant. C'est également la valeur par défaut lors de l'accès à l'objet Match.

Tout sur le paramètre de motif

La construction du modèle est similaire à PERL. La création de modèles est la chose la plus importante lorsque vous travaillez avec des expressions régulières. Dans cette section, nous verrons comment créer un motif basé sur divers facteurs.

Correspondance de position

L'importance de la correspondance de position est de s'assurer que nous plaçons les expressions régulières aux bons endroits.

symbole La description
^ Correspond uniquement au début d'une chaîne.
$ Correspond uniquement à la fin d'une chaîne.
\ b Correspond à n'importe quelle limite de mot
\ B Correspond à n'importe quelle limite autre qu'un mot

Correspondance littérale

Toute forme de caractères tels que l'alphabet, le nombre ou le caractère spécial ou même décimal, hexadécimal peut être traité comme un littéral. Étant donné que peu de caractères ont déjà une signification particulière dans le contexte de l'expression régulière, nous devons les échapper à l'aide de séquences d'échappement.

symbole La description
Alphanumérique Correspond uniquement aux caractères alphabétiques et numériques.
\ n Correspond à une nouvelle ligne.
\ [ Correspondances [littéral uniquement
\] Correspond à] littéral uniquement
\ ( Correspondances (littéral uniquement
\) Matches) littéral uniquement
\ t Correspond à l'onglet horizontal
\ v Correspond à l'onglet vertical
\ | Matchs | littéral seulement
\ { Correspond à {littéral uniquement
\} Correspond à} littéral uniquement
\\ Correspond à \ littéral uniquement
\? Allumettes ? littéral seulement
\ * Correspond à * littéral uniquement
\ + Correspondances + littéral uniquement
\. Allumettes . littéral seulement
\ b Correspond à n'importe quelle limite de mot
\ B Correspond à n'importe quelle limite autre qu'un mot
\F Correspond à un flux de formulaire
\ r Correspond au retour chariot
\ xxx Correspond au caractère ASCII d'un nombre octal xxx.
\ xdd Correspond au caractère ASCII d'un nombre hexadécimal dd.
\ uxxxx Correspond au caractère ASCII d'un littéral UNICODE xxxx.

Correspondance des classes de caractères

Les classes de caractères sont le motif formé par un regroupement personnalisé et entouré d'accolades []. Si nous attendons une classe de caractères qui ne devrait pas être dans la liste, alors nous devons ignorer cette classe de caractères particulière en utilisant le symbole négatif, qui est une majuscule ^.

symbole La description
[xyz] Correspond à n'importe quelle classe de caractères incluse dans le jeu de caractères.
[^ xyz] Correspond à toute classe de caractères qui n'est PAS incluse dans le jeu de caractères.
. Correspond à n'importe quelle classe de caractères sauf \ n
\ w Correspond à n'importe quelle classe de caractères de mot. Équivalent à [a-zA-Z_0-9]
\ W Correspond à n'importe quelle classe de caractères autres que des mots. Équivalent à [^ a-zA-Z_0-9]
\ré Correspond à n'importe quelle classe de chiffres. Équivalent à [0-9].
\RÉ Correspond à n'importe quelle classe de caractères sans chiffres. Équivaut à [^ 0-9].
\ s Correspond à n'importe quelle classe de caractères d'espace. Équivalent à [\ t \ r \ n \ v \ f]
\ S Correspond à n'importe quelle classe de caractères d'espace. Équivalent à [^ \ t \ r \ n \ v \ f]

Correspondance de répétition

La correspondance de répétition permet plusieurs recherches dans l'expression régulière. Il spécifie également le nombre de fois qu'un élément est répété dans une expression régulière.

symbole La description
* Correspond à zéro ou plusieurs occurrences de l'expression régulière donnée. Équivalent à {0,}.
+ Correspond à une ou plusieurs occurrences de l'expression régulière donnée. Équivaut à {1,}.
? Correspond à zéro ou une occurrence de l'expression régulière donnée. Équivaut à {0,1}.
{X} Correspond exactement au nombre d'occurrences de l'expression régulière donnée.
{X,} Correspond à au moins x occurrences ou plus de l'expression régulière donnée.
{x, y} Correspond au nombre x à y d'occurrences de l'expression régulière donnée.

Alternance et regroupement

L'alternance et le regroupement aident les développeurs à créer des expressions régulières plus complexes en traitant particulièrement les clauses complexes dans une expression régulière, ce qui donne une grande flexibilité et un contrôle.

symbole La description
0 Regrouper une clause pour créer une clause. "(xy)? (z)" correspond à "xyz" ou "z".
| L'alternance combine une clause d'expression régulière, puis correspond à l'une des clauses individuelles. "(ij) | (23) | (pq)" correspond à "ij" ou "23" ou "pq".

Création d'expressions régulières

Vous trouverez ci-dessous quelques exemples qui expliquent clairement comment créer une expression régulière.

Expression régulière La description
"^ \ s * .." et ".. \ s * $" Représente qu'il peut y avoir n'importe quel nombre de caractères d'espacement de début et de fin sur une seule ligne.
"((\ $ \ s?) | (# \ s?))?" Représente un signe facultatif $ ou # suivi d'un espace facultatif.
"((\ d + (\. (\ d \ d)?)?))" Représente qu'au moins un chiffre est présent, suivi d'une décimale facultative et de deux chiffres après la décimale.

Exemple

L'exemple ci-dessous vérifie si l'utilisateur a entré ou non un identifiant de messagerie dont le format doit correspondre de telle sorte qu'il y ait un identifiant de messagerie suivi de «@», puis suivi du nom de domaine.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "[email protected]"
         Set re = New RegExp
         With re
            .Pattern    = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>