Les expressions régulières

Version projecteur

Les expressions régulières permettent de vérifier qu'une chaine de caractères est bien l'écriture d'un certain type de données, sans avoir à programmer cette vérification.

Ensembles de caractères

\d représente un chiffre quelconque.

\s représente un caractères d'espacement (blanc,passage à la ligne, saut de page, tabulation ...).

-: permet de représenter un intervalle de caractère.

Exemples:

Pour représenter une alternative entre plusieurs caractères on utilise des crochets.

Exemples:

Répétitions

+ pour répéter au moins une fois

+ permet de répéter une ou plusieurs fois le caractère qui précède.

Exemple: un nombre entier positif est une suite non vide de chiffres, ce qui se représentera par l'expression régulière \d+.

(expression régulière)+ signifie répéter une ou plusieurs fois l'expression entre parenthèse.

Exemple: \d+(,\d+)+ définit une suite d'au moins deux nombres entiers positifs séparés par des virgules.

* pour répéter zéro, une ou plusieurs fois

* permet de répéter zéro, une ou plusieurs fois le caractère qui précède.

Exemple: \s* représente une suite éventuellement vide de blancs. On pourra par exemple utiliser cette expression régulière pour représenter un nombre entier positif éventuellement précédé et/ou suivie d'une suite de blancs par \s*\d+\s*.

(expression régulière)* signifie répéter zéro, une ou plusieurs fois l'expression entre parenthèse.

Exemple: \d+(,\d+)* définit un ou plusieurs nombres entiers positifs séparés par des virgules.

{n} pour répéter n fois

{n} permet de répéter n fois le caractère qui précéde.

Exemple: \d{4} représente un nombre de quatre chiffres.

(expression régulière){n} permet de répéter n fois l'expression régulière entre parenthèses.

Exemple: \d+(,\d+){4} définit cinq nombres entiers positifs séparés par des virgules.

Parties optionnelles

? rend le caractère qui précède optionnel.

Exemple: les? représente les deux mots le ou les.

(expression régulière)? rend l'expression entre parenthèses optionnelle.

Exemple: [a-zA-Z](\d+)? définit toutes les chaines de caractères commencant par une lettre, suivie optionnellement par une suite de chiffres.

Utilisation du caractère d'échappement

\ permet d'annuler la signification des caractères spéciaux permettant de définir des expressions régulières afin de pouvoir les utiliser à l'intérieur d'une expression régulière en tant que caractère normal.

Exemples, il faut écrire:

Utilisation des caractères $ et ^

Une expression régulière peut optionnellement commencer par ^ et/ou se terminer par $. Cela nous donne quatre possibilités:

  1. Si une expression régulière commence par ^ et ne se termine pas par $, elle définit toutes les chaines de caractères commencant par un chaine de caractère compatible avec cette expression.

    Exemple: ^/d+ définit toutes les chaines de caractères commencant par une suite de chiffres (par exemple 72, 201EC, 200èA2,...).
  2. Si une expression régulière se termine par $ et ne commence pas par ^, elle définit toutes les chaines de caractères se terminant par une chaine de caractères compatible avec cette expression.

    Exemple: /d+$ définit toutes les chaines de caractères se terminant par une suite de chiffres (par exemple tara21, 01-h21, 98, ...)
  3. Si une expression régulière commence par ^ et se termine par $, elle représente les chaines de caractères compatibles avec l'expression régulière dans leur totalité.

    Exemple: ^/d+$ définit toutes les chaines de caractères composées d'une suite de chiffres ou autrement dit, les nombres entiers positifs.
  4. Si une expression régulière ne commence pas par ^ et ne se termine pas par $, elle représente les chaines de caractères contenant une sous-chaine compatible avec cette expression.

    Exemple: /d+ définit toutes les chaines de caractères contenant une suite de chiffres (par exemple: er204, 2à@, __711he, ...)

Comment utiliser les expressions régulières

En Javascript les expressions régulières sont représentées par la classe RegExp.

Une chaine de caractères entre / et / est considérée comme un objet de cette classe.

Par exemple:

er = /^\d+$/;

affecte à er l'expression régulière ^\d+$.

La méthode Test de la classe RegExp permet de vérifier qu'une chaine de caractères est compatible avec une expressions régulières.

Plus précisément, si ch est une chaine de caractères et er une expression régulière, er.Test(ch) vaut true si et seulement si ch est compatible avec l'expression régulière er.

Avec l'exemple précédent, er.Test(ch) vaut true si et seulement si ch est une suite de chiffres.

Exemple: voir Nombres.