Les expressions régulières existent dans pratiquement tous les langages de programmation.
Parfois relativement complexes à retenir, elles sont assez mal connues. Cependant, l’utilisation de ces objets peut se révéler très puissante.
Maîtriser ces expressions régulières ne peut être que profitable pour tout programmeur, notamment de part sa forme compacte. En effet, ces dernières requièrent beaucoup moins de lignes de code que si l’on devait les remplacer par des tests classiques.
On les appelle communément regexp.
Exemple d’utilisation des RegExp
Dans l’exemple qui suit, simple petite mise en bouche, nous allons créer une fonction qui vérifie que le terme saisi, en l’occurrence un pseudo, remplit bien les conditions demandées.
Pour que le format soit valide, nous allons considérer qu’un pseudo doit comporter entre 5 et 9 caractères. Il devra se composer de n’importe quelle lettre en minuscule (de a à z). Nous n’accepterons pas les caractères accentués mais les chiffres seront acceptés (de 0 à 9).
function isValidPseudo(pseudo){ var myPseudo = new RegExp("^[a-z0-9]{5,9}$","g"); if(myPseudo.test(pseudo)){ return 'Le pseudo "' + pseudo + '" est valide'; } else { return "Le pseudo saisi ne remplit pas les conditions demandées"; } } document.write(isValidPseudo('Analyste')); // Mauvais pseudo à cause de la majuscule document.write(isValidPseudo('expressions')); // Mauvais pseudo à cause du nombre de caractères (>9) document.write(isValidPseudo('B 2 B')); // Mauvais pseudo à cause de espaces document.write(isValidPseudo('développeur')); // Mauvais pseudo à cause du caractère accentué document.write(isValidPseudo('php759')); // Ce pseudo est valide
Dans cet exemple, on constate que le test effectuant la validité du pseudo saisi est très compact.
Le principe des expressions régulières consiste donc à créer un motif (ou un masque) et de tester sa présence dans une chaîne de caractères.
Ce premier test est assez rudimentaire mais l’utilisation des expressions régulières en javascript comme dans les autres langages peut se faire de manière bien plus élaborée et plus complexe.
Quelques explications
Le motif de contrôle de notre fonction isValidPseudo est le suivant « ^[a-z0-9]{5,9}$ », »g ».
- Ce motif commence par ^ qui signifie le début de la chaîne. Aucun caractère précédent le motif n’est autorisé.
- La suite, [a-z0-9] représente tous les caractères de a à z (en minuscule) et les chiffres de 0 à 9. Si un autre caractère que ceux-ci est rencontré, l’expression testée sera immédiatement invalidée.
- La partie {5,9} fournit la longueur requise pour le pseudo. Au minimum, 5 caractères; au maximum, 9.
- Puisque le motif se termine par $, cela indique qu’aucun caractère ne doit apparaître à la suite de ce motif ([a-z0-9]).
- L’option notée g signale qu’il faut appliquer le motif sur l’ensemble de la chaîne.