Académique Documents
Professionnel Documents
Culture Documents
Contenu
• L’objet RegExp
– Expressions régulières
– Définition de motifs
– Classe de caractères
– Caractères spéciaux
– Répétitions
– Regroupements
– Méthodes pour manipuler et valider des chaînes
Expressions régulières
• Une « regexp » contient des caractères, mais peut aussi contenir un des méta-
caractères suivants.
• \ : échappement du caractère suivant;
• ^ : indique le début de la ligne du motif;
• $ : indique la fin de la ligne du motif;
• . : remplace n’importe quel caractère (sauf retour);
• [] : indique une classe de caractères;
• () : indique un groupement;
• | : indique une alternative (option);
• {} : les répétitions.
Exemples – début
• Une classe permet d’énumérer plusieurs caractères pouvant faire parti du motif à une
position donnée.
• Une classe utilise [] pour définir les énumérations possibles.
• Par exemple, [abc] signifie un seul caractère parmi a, b ou c dans le motif.
• Par exemple, ^p[abc]$ correspond à pa ou pb ou pc
• Les méta-caractères changent de signification dans []:
– \ c’est encore le caractère d’échappement;
– ^ c’est la négation; (voir plus loin)
– - c’est pour définir une étendu;
– [ et ] utilisés pour encadrer les classes;
– \b signifie « backspace » si utilisé dans les [].
– Les autres méta-caractères ne veulent rien dire.
• Le . veut dire le caractère . lorsqu'utilisé dans [], même chose pour $.
Exemples – classes
• Pour ajouter une répétition dans notre motif on utilise le format suivant:
• {n, m} : signifie au moins n fois et au plus m fois.
• Cela permet de répéter l’élément qui le précède.
• Les deux valeurs sont optionnels, mais il faut en mettre au moins une.
– {n} : signifie exactement n fois.
– {n, } : signifie au moins n fois.
– {, m} : signifie au plus m fois.
– ? : forme abrégée de {0, 1} (optionnel).
– + : forme abrégée de { 1, } au moins une fois.
– * : forme abrégée de { 0, } 0 ou plusieurs fois.
Les caractères spéciaux
• Certains caractères sont utilisés souvent ensemble alors des formes abrégés
ont été créés pour les identifier.
• \s : correspond aux espaces (space), espace, tab, linefeed, formfeed, etc…
• \S : négation de \s
• \w : correspond à un caractère d’un mot (word), alphanumérique, souligné,
etc…
• \W : négation de \w
• \d : un nombre (digit)
• \D : négation de \d
Exercices
• test() est la méthode la plus facile à utiliser: elle prend en argument une chaîne de caractères et
retourne VRAI s’il y a une correspondance.
var pattern = /ava/;
pattern. test(" Javascript"); // retourne vrai
• search() est une méthode de chaînes de caractères qui prend comme argument une expression
régulière et retourne la position de la première correspondance et -1 s’il n’y a pas de
correspondance.
"Javascript".search(/ava/) // retourne 1
• Exemple: validation d’un code postal dans un textbox
var codepostal = document.getElementById("codepostal"); if (pattern.test(codepostal.value)) {
// dans le if... il y a une correspondance (un match...) c’est valide
} else {
// ici ça veut dire qu'il n'y a pas eu de "match".....
// on affiche un message d'erreur de rejet de code postal
// on peut aussi mettre le curseur dans le textbox: codepostal.focus();
}
Exemple sur le groupement
• Question????? Suite à l’exécution des codes suivants qu’est-ce que resultat contient??
var motif = /^([a-z][0-9])/;
• Pour valider le code permanent avec le nom, prénom, sexe et date de naissance en utilisant des
textboxes (le code permanent est composé des 3 premiers caractères du nom, du premier car du
prénom, du jour de naissance, suivi du mois et de l’année:
• La première étape est d’extraire du code permanent les caractères du nom, ensuite ceux du
prénom et ainsi de suite. Il est plus simple d’utiliser une expression régulière pour faire cette
extraction:
var pattern = /^([A-Za-z]{3})([A-Za-z])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])$/;
annee = RegExp.$5;
// il ne reste qu’à comparer avec les textboxes…
}