Alternation: |L'alternative : |

The vertical bar (|) is the “or” of regular expressions. It separates several possibilities, and the first one that matches at that point in the text is the one kept. MDN, the reference this module leans on, calls it a disjunction, which is the word to search for there:

  • /cat|dog/ → “cat” or “dog”;
  • /Monday|Tuesday|Wednesday/ → any of the three.

It is the last of the three basic ways of assembling a pattern. An expression puts elements one after another, it repeats them, and it offers alternatives; everything else is a combination of those.

How far the bar reaches

The trap is its reach. Without parentheses, | separates everything on its left from everything on its right, out to the edges of the expression. /^cat|dog$/ therefore does not mean “cat or dog, alone on their line”: it means “cat at the start of a line, or dog at the end of one”. For the intended sense you need a group: /^(cat|dog)$/.

That reach follows an order of operations, the same idea as in arithmetic, where 2 + 3 × 4 is 14 rather than 20. An expression is read in three steps. Repetition is read first, which is why a quantifier quantifierquantificateur regular expressionsexpressions rationnelles A regular-expression operator stating how many times the preceding element may repeat ({n}, {n,m}, *, +, ?); greedy by default, matching as much as possible, and made lazy with a following ?Opérateur d'expression rationnelle indiquant combien de fois l'élément précédent peut se répéter ({n}, {n,m}, *, +, ?); gourmand par défaut (il capture le plus possible), il devient non gourmand avec un ? supplémentaire. takes only the element in front of it. Then come the elements placed one after another, tied into a sequence. The bar is read last, so it separates whatever is left. Parentheses are read before all of that, and that is the second reason they exist.

That is also what makes alternation useful with groups: the shared part is written once, and only the variation stays inside the parentheses.

  • /translat(ion|or)/ → “translation” or “translator”;
  • /(anti|pro)nuclear/ → “antinuclear” or “pronuclear”.
ExerciseExercice 12 · translation or translatortraduction ou traducteur intermediateintermédiaire not startedà faire solvedréussi keep tryingà retravailler
Find "translation" and "translator" in one expression, with an alternation inside a group.
Trouvez « traduction » et « traducteur » en une seule expression, avec une alternative dans un groupe.
Test textTexte de test
The translation is finished; the translator is proofreading. Translating is not the same as revising.
La traduction est finie ; le traducteur relit. La traductrice aussi. Personne ne dit traduiseur.
Expected matches:Correspondances attendues : traduction traducteur
Expected matches:Correspondances attendues : translation translator
//gmu
Written alternately in EN and FR, translation partly generated in both directions. Rédigé en alternance en EN et en FR, traduction en partie générée dans les deux sens. Updated 2026-08-27

La barre verticale (|) est le « ou » des expressions rationnelles. Elle sépare plusieurs possibilités, et c’est la première qui correspond à cet endroit du texte qui est retenue. MDN, la référence sur laquelle s’appuie ce module, la nomme disjunction, et c’est ce mot anglais qu’il faut y chercher :

  • /chat|chien/ → « chat » ou « chien » ;
  • /lundi|mardi|mercredi/ → l’un des trois.

C’est le dernier des trois assemblages de base. Une expression met des éléments à la suite, elle les répète, et elle offre des possibilités ; tout le reste en est une combinaison.

La portée de la barre

Le piège est la portée. Sans parenthèses, | sépare tout ce qui est à sa gauche de tout ce qui est à sa droite, jusqu’aux bords de l’expression. /^chat|chien$/ ne signifie donc pas « chat ou chien, seuls sur leur ligne » : il signifie « chat en début de ligne, ou chien en fin de ligne ». Pour le sens attendu, il faut un groupe : /^(chat|chien)$/.

Cette portée découle d’un ordre des opérations, la même idée qu’en arithmétique, où 2 + 3 × 4 vaut 14 et non 20. Une expression se lit en trois temps. La répétition se lit en premier, ce qui explique qu’un quantificateur quantifierquantificateur regular expressionsexpressions rationnelles A regular-expression operator stating how many times the preceding element may repeat ({n}, {n,m}, *, +, ?); greedy by default, matching as much as possible, and made lazy with a following ?Opérateur d'expression rationnelle indiquant combien de fois l'élément précédent peut se répéter ({n}, {n,m}, *, +, ?); gourmand par défaut (il capture le plus possible), il devient non gourmand avec un ? supplémentaire. ne porte que sur l’élément qui le précède. Viennent ensuite les éléments placés les uns à la suite des autres, liés en une séquence. La barre se lit en dernier, et sépare donc tout ce qui reste. Les parenthèses se lisent avant tout cela, et c’est la deuxième raison de leur existence.

C’est aussi ce qui rend l’alternative utile avec les groupes : la partie commune s’écrit une fois, et seule la variation reste dans les parenthèses.

  • /traduct(ion|eur)/ → « traduction » ou « traducteur » ;
  • /(anti|pro)nucléaire/ → « antinucléaire » ou « pronucléaire ».
ExerciseExercice 12 · translation or translatortraduction ou traducteur intermediateintermédiaire not startedà faire solvedréussi keep tryingà retravailler
Find "translation" and "translator" in one expression, with an alternation inside a group.
Trouvez « traduction » et « traducteur » en une seule expression, avec une alternative dans un groupe.
Test textTexte de test
The translation is finished; the translator is proofreading. Translating is not the same as revising.
La traduction est finie ; le traducteur relit. La traductrice aussi. Personne ne dit traduiseur.
Expected matches:Correspondances attendues : traduction traducteur
Expected matches:Correspondances attendues : translation translator
//gmu
Written alternately in EN and FR, translation partly generated in both directions. Rédigé en alternance en EN et en FR, traduction en partie générée dans les deux sens. Mise à jour 2026-08-30

Sources

Sources

Spotted an error? Une erreur ?

Language, content, a broken link: tell me what you saw and I will fix it. Langue, contenu, lien brisé : dites-moi ce que vous avez vu et je corrige.

Sending opens your mail app with the report addressed to me. L'envoi ouvre votre application de courriel avec le signalement déjà adressé à moi.