Les quantificateurs javascript

Parent Previous Next



Les quantificateurs



Les quantificateurs permettent de dire combien de fois un caractère doit être recherché. Il est possible de dire qu'un caractère peut apparaître 0 ou 1 fois, 1 fois ou une infinité de fois, ou même, avec des accolades, de dire qu'un caractère peut être répété 3, 4, 5 ou 10 fois.

À partir d'ici, la syntaxe des regex va devenir plus complexe !


Les trois symboles quantificateurs



Reprenons notre raclette. Il y a deux t, mais il se pourrait que l'utilisateur ait fait une faute de frappe et n'en ait mis qu'un seul. On va donc écrire une regex capable de gérer ce cas de figure :

/raclett?e/


Ici, le premier t sera trouvé, et derrière le deuxième se trouve le point d'interrogation, ce qui signifie que le deuxième t peut apparaître 0 ou 1 fois. Cette regex gère donc notre cas de figure.


Un cas saugrenu serait qu'il y ait beaucoup de t : « raclettttttttttte ». Pas de panique, il suffit d'utiliser le quantificateur + :

/raclet+e/


Le + indique que le t sera présent une fois ou un nombre infini de fois. Avec le symbole *, la lettre est facultative mais peut être répétée un nombre infini de fois. En utilisant *, la regex précédente peut s'écrire :

/raclett*e/


Les accolades


À la place des trois symboles vus précédemment, on peut utiliser des accolades pour définir explicitement combien de fois un caractère peut être répété. Trois syntaxes sont disponibles :


Si la tartiflette possède un, deux ou trois t, la regex peut s'écrire :

/raclet{1,3}e/


Les quantificateurs, accolades ou symboles, peuvent aussi être utilisés avec les classes de caractères. Si on mange une « racleffe » au lieu d'une « raclette », on peut imaginer la regex suivante :

/racle[tf]+e/


Voici, pour clore cette section, quelques exemples de regex qui utilisent tout ce qui a été vu :


Chaîne

Regex

Résultat

Hellowwwwwwwww

/Hellow+/

true

Goooooogle

/Go{2,}gle/

true

Le 1er septembre

/Le [1-9][a-z]{2,3} septembre/

true

Le 1er septembre

/Le [1-9][a-z]{2,3}[a-z]+/

false


La dernière regex est fausse à cause de l'espace. En effet, la classe [a-z] ne trouvera pas l'espace. Nous verrons cela dans un prochain chapitre sur les regex.

Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub gratuit

Site à deux balles