Ce face ^ și $ (început și sfârșit de șir / linie)
Simbolurile ^ (circumflex) și $ (dolar) sunt ancore de poziție: ele nu consumă niciun caracter din text, ci verifică doar că motorul RegEx se află exact la începutul șirului (^), respectiv la sfârșitul șirului ($).
În orice validare de formular (email, telefon, CNP, parolă), folosirea ambelor ancore (^...$) este obligatorie: fără ele, o expresie precum /\d{13}/ va returna true și pentru textul "abc 1900101123456 xyz", deoarece conține undeva în interior 13 cifre! Cu flag-ul m (multiline) activat, ^ și $ potrivesc începutul și sfârșitul fiecărui rând în parte.
Variante și sintaxă asociată
| Expresie / Simbol | Descriere |
|---|---|
^ |
Începutul întregului șir de text (sau începutul liniei curente dacă flag-ul m este activ). |
$ |
Sfârșitul întregului șir de text (sau sfârșitul liniei curente cu flag-ul m). |
^...$ |
Forțează ca întregul șir de la cap la coadă să respecte șablonul (esențial la validări). |
^\s*$ |
Potrivește o linie complet goală sau care conține doar spații albe. |
\A și \z |
În PCRE (PHP) și Python (\Z): începutul și sfârșitul absolut al șirului, ignorând flag-ul m și \n final. |
Exemple
Exemplul 1: Diferența critică la validare: cu și fără ^…$
Observă cum fără ancore, o expresie de validare acceptă orice text parazit înainte sau după porțiunea validă.
Expresie parțială (GREȘIT pentru validare): /\d{4}-\d{2}-\d{2}/
Expresie ancorată (CORECT pentru validare): /^\d{4}-\d{2}-\d{2}$/
Input 1: "2026-10-23"
Input 2: "Data comenzii: 2026-10-23 (livrare mâine)"
Potriviri găsite (Matches)
Pe Input 1 ("2026-10-23"):
Ambele expresii returnează TRUE.
Pe Input 2 ("Data comenzii: 2026-10-23 (livrare mâine)"):
/\d{4}-\d{2}-\d{2}/ -> TRUE (găsește data în mijlocul textului!)
/^\d{4}-\d{2}-\d{2}$/ -> FALSE (respinge corect inputul fiindcă nu conține DOAR data)
Exemplul 2: Extragerea liniilor de comentariu cu ^ și flag-ul m (multiline)
Cu flag-ul m, ^#.*$ selectează fiecare linie care începe cu # dintr-un fișier de configurare.
Expresie: /^#.*$/gm
Text:
# Configurare bază de date
host = localhost
# Portul implicit PostgreSQL
port = 5432
Potriviri găsite (Matches)
Match 1: "# Configurare bază de date"
Match 2: "# Portul implicit PostgreSQL"
Greșeli frecvente
- În PCRE (PHP
preg_match), ancora$potrivește și poziția chiar înainte de un\nfinal! Astfel,/^\d+$/în PHP returnează1pentru"12345\n". Pentru validări de securitate stricte în PHP, folosește\Ași\z(ex./\A\d+\z/) sau flag-ulD(PCRE_DOLLAR_ENDONLY). - Folosirea lui
^cu alternare fără paranteze:^cat|dog$înseamnă „începe cucatSAU se termină cudog”, nu „este exactcatsaudog”. Scrie mereu^(?:cat|dog)$.
Simboluri și rețete înrudite
\b și \B (limită de cuvânt): Potrivește poziția de graniță dintre un cuvânt și un non-cuvânt (\b) sau o poziție din interiorul cuvântului (\B).Flag-uri RegEx: g, i, m, s, u, x: Modificatori globali care schimbă modul de evaluare a expresiei: căutare multiplă (g), insensibil la majuscule (i), multi-linie (m), Unicode (u).| (operatorul SAU / alternare): Permite alegerea între două sau mai multe expresii alternative (SAU logic în RegEx).[^...] (set negat): Potrivește orice caracter care NU se află în lista sau intervalul dintre parantezele drepte.