| (operatorul SAU / alternare) în Expresii Regulare (RegEx)

Ancore și limite PCRE / ECMAScript / POSIX

Permite alegerea între două sau mai multe expresii alternative (SAU logic în RegEx).

Tipar RegEx
exp1|exp2   |   (?:ro|com|eu)   |   ^(?:da|nu)$

Ce face | (operatorul SAU / alternare)

Bara verticală | (pipe / alternation) funcționează ca operatorul logic SAU (OR) în expresiile regulare: motorul încearcă alternativele de la stânga la dreapta și se oprește la prima variantă care reușește să potrivească.

Cel mai important aspect tehnic al operatorului | este că are cea mai mică precedență (prioritate) dintre toți operatorii RegEx! Asta înseamnă că | împarte întreaga expresie (sau întregul grup din care face parte) în două jumătăți complet separate. Din acest motiv, aproape întotdeauna vei dori să izolezi alternarea în interiorul unor paranteze: (var1|var2) sau (?:var1|var2).

Variante și sintaxă asociată

Expresie / Simbol Descriere
A|B|C Potrivește fie subexpresia A, fie B, fie C (testate în ordine de la stânga la dreapta).
(?:A|B) Limitează domeniul alternării doar la A și B, fără a crea un grup de captură.
\.(?:jpg|jpeg|png|webp)$ Verifică dacă un nume de fișier are una dintre extensiile de imagine listate.
^(?:da|nu)$ Validează că întregul șir este exact „da” sau exact „nu”.

Exemple

Exemplul 1: Extragerea extensiilor sau a zilelor săptămânii cu grup și |

Izolăm variantele în (?:...) pentru ca limitele \b să se aplice fiecărei opțiuni.

Expresie: /\b(?:luni|marți|miercuri|joi|vineri)\b/gi
Text:     "Ședința de marți s-a mutat vineri dimineață."

Potriviri găsite (Matches)

Match 1: "marți"
Match 2: "vineri"

Exemplul 2: Ordinea variantelor în alternare contează (cea mai lungă prima!)

Motorul RegEx este eager: dacă prima variantă din | este un prefix al celei de-a doua, se va opri la prima.

Expresie greșită: /ron|ronaldo/gi
Expresie corectă: /ronaldo|ron/gi
Text:             "Cristiano Ronaldo a plătit 100 RON."

Potriviri găsite (Matches)

Cu /ron|ronaldo/gi -> Match 1: "Ron" (din Ronaldo!), Match 2: "RON"
Cu /ronaldo|ron/gi -> Match 1: "Ronaldo",            Match 2: "RON"

Greșeli frecvente

  • Uitarea parantezelor când combini | cu ancorele ^ și $: expresia /^http|https$/ înseamnă „începe cu http SAU se termină cu https” (acceptând "http_orice_prostie"!). Scrie mereu /^(?:http|https)$/ sau /^https?$/.
  • Folosirea alternării (a|b|c) pentru caractere individuale în loc de un set [abc]: setul de caractere este mult mai rapid și mai scurt de scris.
  • Scrierea lui [da|nu] în paranteze drepte: în interiorul [...], bara verticală | nu este operator SAU, ci caracterul literal |.

Simboluri și rețete înrudite