Expressions régulières

Les expressions régulières servent à contrôler des chaînes de caractères. Elles nous seront très utiles pour vérifier les champs des formulaires.

Fonctions utilisant les expressions régulières

search(expression_régulière)
Retourne l'indice dans la chaîne correspondant à l'expresion régulière. Cette fonction retourne -1 si aucune partie de la chaîne ne correspond à l'expression.
match(expression_régulière)
Retourne un tableau contenant les chaînes trouvées par l'expression régulière. Cette fonction retourne null si elle ne trouve aucune sous-chaîne.
expression=regexpr(expression_régulière)
Permet d'utiliser des variables dans les fonctions ci-dessus à la place d'expressions en dur : on pourra par exemple utiliser la variable expression à la place de l'expression régulière rentrée dans la fonction regexpr().

Exemple :

if (chaine.search(/^[A-Z]+$/)==-1) {
    alert('Il faut écrire en majuscules');
}

Dans cet exemple, si la chaîne de caractères chaine n'est pas composée uniquement de majuscules, une fenêtre prévient l'utilisateur qu'il faut écrire en majuscules.

Exemple :

var date="01/11/2004";
tableau=date.match(/[0-9]{2,4}/g);

Dans cet exemple tableau[0] contiendra "01", tableau[1] contiendra "11" et tableau[2] contiendra "2004".

le caractère g indique qu'on fait une recherche globale. S'il n'est pas indiqué, la recherche s'arrètera à "01".

Définition d'une expression régulière

Une expression régulière est entourée soit par des guillemets, soit par le caractère "/".

Caractères utilisés :

\
Si le caractère suivant est un caractère spécial (un de cette liste), c'est le caractère d'échappement : il indique que le caractère doit être considéré comme non-spécial
Si la caractère suivant est un caractère non spécial (exemple : "d"), il indique que ce caractère doit être considéré comme spécial.
^
Début de chaîne.
$
Fin de chaîne
*
Le caractère précédent peut-être présent ou pas dans la chaîne controlée.
+
Le caractère précédent doit être présent au moins une fois.
?
Le caractère précédent doit être non-répété (présent au maximum une fois)
{n}
Avec n un nombre entier
Le caractère précédent doit-être présent n fois.
{n,p}
Avec n et p deux entiers, n<p
Le caractère prédédent doit être présent au minimum n fois et au maximum p fois.
[abcdef87]
Le caractère doit correspondre à un des caractères présent entre crochet.
[^dlqu321]
Le caractère ne doit pas être un de ceux entre crochets.
[A-G0-4]
Le caractère doit être majuscule et compris entre A et G (inclus) ou un chiffre entre 0 et 4.
a|b
Le caractère doit être a OU EXCLUSIF b.
.
N'importe quel caractère, mais doit être présent.
/expression/g
Faire une recherche globale : rechercher l'expression autant de fois qu'elle parait (à la fin de la
/expression/i
Faire une recherche sans respecter la casse.

Exemples :

/but/
Les chaines suivantes seront conformes : "but", "butée", "débuter" : trouve "but" dans une chaîne de caractères
/.but/
Chaîne conforme : "début". Chaîne non conforme : "butée". La chaîne ne doit pas commencer par "but"
/^but$/i
Chaînes conformes : "but", "BUT", "But". Chaînes non conformes : "début", "butée". La chaîne ne doit comporter que "but" mais la recherche est insensible à la casse.
/[A-Z]{5,8}/
Chaînes conformes : "ATTILA", "PARIS". Chaînes non conformes : "Attila", "MOI". La chaîne ne doit comporter que des majuscules et doit faire entre 5 et 8 caractères.
/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/
Chaînes conformes : "02-05-2004", "22-05-1984". Chaînes non conformes : "19/04/1953", "1-11-2005". Impose 2 fois 2 chiffres puis une fois 4 chiffres séparés par le caractère "-".