Ce face \ (escaparea caracterelor speciale)
În expresiile regulare există 12 metacaractere cu rol special în afara parantezelor drepte: \ ^ $ . | ? * + ( ) [ { (plus delimitatorul expresiei, de obicei /). Dacă vrei să cauți oricare dintre aceste simboluri ca text propriu-zis (literal) — de exemplu semnul + într-un număr de telefon +40, $ într-un preț $100 sau ? într-o întrebare — trebuie să pui un backslash (\) în fața lui.
Atunci când construiești expresii regulare dinamic dintr-un input al utilizatorului, nu încerca să escapezi manual caracterele: folosește funcția nativă a limbajului, precum preg_quote($str, '/') în PHP, re.escape(s) în Python sau RegExp.escape(s) în JavaScript modern.
Variante și sintaxă asociată
| Expresie / Simbol | Descriere |
|---|---|
\. \? \+ \* |
Potrivește caracterele literale punct (.), semnul întrebării (?), plus (+), asterisc (*). |
\( \) \[ \] \{ \} |
Potrivește paranteze rotunde, drepte sau acolade literale. |
\^ \$ \| |
Potrivește simbolurile literale circumflex (^), dolar ($) și bară verticală (|). |
\\ |
Potrivește un singur caracter backslash (\) literal (ex. în căi Windows C:\Users). |
\/ |
Escapează slash-ul (/) atunci când expresia este delimitată de /…/. |
\Q...\E |
În PCRE (PHP): tot ce se află între \Q și \E este tratat automat ca text literal. |
Exemple
Exemplul 1: Potrivirea unei operații matematice sau a unui preț cu simboluri speciale
Căutăm expresia 1 + 1 = 2? și prețul $49.99 (TVA inclus) escapând metacaracterele.
Expresie 1: /1 \+ 1 = 2\?/
Expresie 2: /\$\d+\.\d{2} \(TVA inclus\)/
Text: "Calcul: 1 + 1 = 2? Preț total: $49.99 (TVA inclus)."
Potriviri găsite (Matches)
Expresie 1 potrivește: "1 + 1 = 2?"
Expresie 2 potrivește: "$49.99 (TVA inclus)"
Exemplul 2: Escaparea automată a unui șir dinamic în PHP și JavaScript
Când cauți un termen introdus de utilizator (ex. C++ (2026)), escapează-l înainte de a-l interpola în RegEx.
// PHP:
$termen = 'C++ (2026)';
$pattern = '/' . preg_quote($termen, '/') . '/i'; // devine: /C\+\+ \(2026\)/i
// JavaScript (funcție utilitară clasică):
const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
Potriviri găsite (Matches)
Pattern generat: /C\+\+ \(2026\)/i
Potrivește exact textul literal: "C++ (2026)"
Greșeli frecvente
- În PHP sau Python, când scrii o expresie în ghilimele duble (
"\d+"), limbajul consumă primul backslash înainte ca motorul RegEx să primească șirul! Pentru a căuta un backslash literal în PHP cupreg_match, în ghilimele simple trebuie să scrii'/\\\\/'. Folosește pe cât posibil nowdoc sau în Python raw strings (r"..."). - Escaparea unor litere obișnuite (ex.
\a,\k,\p): în RegEx, backslash pus în fața unei litere creează o secvență specială sau aruncă eroare de sintaxă (mai ales cu flag-ul/u).
Simboluri și rețete înrudite
. (orice caracter): Potrivește orice caracter individual, cu excepția caracterului de linie nouă (newline).RegEx în JavaScript, PHP (preg_match) și Python (re): Ghid comparativ pentru apelarea expresiilor regulare în cele mai populare 3 limbaje: testare, extragere, înlocuire și split.[abc] și [a-z0-9] (seturi și intervale): Definește o clasă personalizată de caractere din care se potrivește un singur caracter.+ și * (unu sau mai multe / zero sau mai multe): Specifică repetarea elementului precedent de cel puțin o dată (+) sau de zero ori mai multe ori (*).