Ce face \w și \W (caractere de cuvânt)
Clasa \w (de la word character) potrivește orice literă (mică sau mare), orice cifră și caracterul underscore (_). În mod implicit (ASCII), \w este exact echivalent cu setul [a-zA-Z0-9_], fiind ideal pentru identificatori de programare, username-uri, slug-uri sau tokenizarea cuvintelor.
Opusul său este \W (echivalent cu [^a-zA-Z0-9_]), care potrivește spațiile, semnele de punctuație, cratimele și simbolurile speciale. Atenție pentru limba română: fără modul Unicode (/u în PCRE), \w nu include diacriticele (ă, î, â, ș, ț)!
Variante și sintaxă asociată
| Expresie / Simbol | Descriere |
|---|---|
\w |
Un caracter de cuvânt ASCII: [a-zA-Z0-9_]. Include underscore și cifre! |
\W |
Orice caracter care NU este în [a-zA-Z0-9_] (spații, cratimă, punctuație). |
\w+ |
Un cuvânt sau identificator continuu format din litere, cifre și underscore. |
[\w-]+ |
Caractere de cuvânt plus cratimă (foarte util pentru slug-uri URL sau nume de clase CSS). |
/\w+/u |
În PHP (PCRE cu flag-ul u) și Python 3, \w include și literele Unicode cu diacritice. |
Exemple
Exemplul 1: Extragerea identificatorilor și a hashtag-urilor
Căutăm simbolul # urmat de unul sau mai multe caractere de cuvânt.
Expresie: /#\w+/g
Text: "Articol nou despre #regex_2026, #php8 și #web-dev!"
Potriviri găsite (Matches)
Match 1: "#regex_2026"
Match 2: "#php8"
Match 3: "#web" (se oprește la cratimă, deoarece '-' nu face parte din \w)
Exemplul 2: Comportamentul lui \w pe cuvinte românești cu diacritice
În JavaScript (chiar și cu /u), \w rămâne strict ASCII și rupe cuvintele la diacritice.
Expresie standard JS: /\w+/g
Expresie Unicode JS: /[\p{L}\p{N}_]+/gu
Text: "învățăm programare"
Potriviri găsite (Matches)
Cu /\w+/g -> ["nv", "m", "programare"] (diacriticele sunt ignorate!)
Cu /[\p{L}\p{N}_]+/gu -> ["învățăm", "programare"] (corect în română)
Greșeli frecvente
- Folosirea lui
\w+în JavaScript pentru a extrage cuvinte în limba română: litereleă, î, â, ș, țsunt tratate ca non-word (\W) și vor sparge cuvintele în bucăți. Folosește\p{L}+cu flag-ulu. - Uitarea faptului că
\wacceptă atât cifre, cât și underscore (_). Dacă vrei strict litere fără cifre și fără_, folosește[a-zA-Z]sau\p{L}.
Simboluri și rețete înrudite
\p{L} și diacriticele românești (ăîâșț): Potrivește corect toate literele Unicode și diacriticele românești (ă, î, â, ș, ț) folosind proprietăți Unicode sau clase explicite.\d și \D (cifre): Scurtătură pentru orice cifră zecimală de la 0 la 9 (\d) sau orice caracter care nu este cifră (\D).\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).[abc] și [a-z0-9] (seturi și intervale): Definește o clasă personalizată de caractere din care se potrivește un singur caracter.