Vai al contenuto principale
🔍 JavaScript / PCRE / tra linguaggi Standard: Unicode Technical Standard #18 / ECMA-262 Tempo: 8 min di lettura Revisionato: ottobre 2026

Unicode nelle regex: escape e flag

Far corrispondere con precisione alfabeti internazionali, scritture ed emoji usando \p{L}, \p{Script}, \p{Extended_Pictographic} e i flag moderni delle espressioni regolari.

TL;DR — Risposta diretta

Risposta tecnica diretta

Le classi di caratteri regex standard (\w, \d, [a-z]) corrispondono solo ai caratteri ASCII e falliscono con il testo internazionale. I motori regex moderni supportano la modalità Unicode (il flag /u o /v in ECMAScript) e gli escape di proprietà Unicode (\p{...}) per far corrispondere i caratteri in base alle loro proprietà Unicode ufficiali.

💡
Regola di produzione: Usate \p{L} per far corrispondere qualsiasi lettera internazionale in qualsiasi alfabeto; usate \p{Extended_Pictographic} per far corrispondere le emoji; attivate sempre il flag /u o /v quando cercate corrispondenze nel testo Unicode.

Escape di proprietà Unicode essenziali

Gli escape di proprietà Unicode più comunemente richiesti, supportati dai motori moderni.

\p{L} or \p{Letter}

Corrispondenze: Qualsiasi lettera in qualsiasi lingua (latino, greco, cirillico, arabo, ebraico, CJK, ecc.)

Esempio: a, é, Ω, Ж, ش, א, 漢

\p{N} or \p{Number}

Corrispondenze: Qualsiasi carattere numerico o cifra (inclusi numeri romani, pedici e apici)

Esempio: 5, ², Ⅳ, ٥

\p{P} or \p{Punctuation}

Corrispondenze: Qualsiasi carattere di punteggiatura

Esempio: !, ?, —, «, », ¿

\p{Z} or \p{Separator}

Corrispondenze: Qualsiasi spazio o separatore invisibile

Esempio: Spazio, spazio unificatore, spazio em

\p{Extended_Pictographic}

Corrispondenze: Tutte le emoji e i simboli pittografici

Esempio: 😀, 🔥, 🚀, 🎉

\p{Script=Greek}

Corrispondenze: Caratteri specifici della scrittura greca

Esempio: α, β, γ, Δ

Corrispondenza di lettere internazionali ed emoji con gli escape di proprietà Unicode

JAVASCRIPT unicode-regex.js
// 1. Traditional \w fails on accented letters and non-Latin alphabets
const asciiRegex = /^\w+$/;
console.log(asciiRegex.test('José'));     // false!
console.log(asciiRegex.test('Müller'));   // false!

// 2. Unicode property escape \p{L} matches any letter in Unicode
const unicodeNameRegex = /^[\p{L}]+$/u;
console.log(unicodeNameRegex.test('José'));     // true!
console.log(unicodeNameRegex.test('Müller'));   // true!
console.log(unicodeNameRegex.test('Владимир')); // true (Cyrillic)!
console.log(unicodeNameRegex.test('田中'));     // true (Kanji)!

// 3. Matching Emojis with \p{Extended_Pictographic}
const emojiRegex = /\p{Extended_Pictographic}/u;
console.log(emojiRegex.test('Hello 🔥!'));     // true!
Output del programma
false
false
true
true
true
true
true

Errori comuni vs modelli di produzione

Scopri quali modelli falliscono in produzione e le alternative moderne conformi agli standard.

Far corrispondere le emoji in sicurezza

Validazione di chat, sanificazione dell'input, filtri delle reazioni.
DA EVITARE: ❌ Intervalli di caratteri fragili
const badEmojiRegex = /[\u1F600-\u1F64F]/; // Matches only one block!
Perché fallisce: Le emoji si estendono su dozzine di blocchi Unicode disparati. Gli intervalli codificati in modo rigido tralasciano cibi, animali, bandiere e i nuovi simboli introdotti nelle versioni recenti di Unicode.
CONSIGLIATO: ✅ \p{Extended_Pictographic}
const goodEmojiRegex = /\p{Extended_Pictographic}/u;
goodEmojiRegex.test('🔥'); // true
goodEmojiRegex.test('🍣'); // true
Perché è migliore: Formalizzato dallo standard Unicode UTS #51 per far corrispondere tutti i simboli pittografici presenti e futuri.

Matrice dei casi limite e invarianti

Una matrice di test diversificata che confronta il comportamento dei caratteri tra ASCII, segni combinanti, emoji, bandiere e frammenti surrogati.

Caso di test Glifo di input Unità di codice Punti di codice Grafemi Categoria Spiegazione tecnica
Nome con accenti Renée — — — Standard Sia le lettere base sia le lettere accentate corrispondono a \p{L}.
Testo cirillico Привет — — — Standard Le lettere cirilliche corrispondono a \p{L} in modalità Unicode.
Ideogrammi CJK 東京 — — — Standard Corrisponde esplicitamente ai caratteri Kanji/Han.

Standard e provenienza delle fonti

Tutti gli invarianti tecnici, le API e i comportamenti di questa guida sono verificati rispetto alle specifiche primarie ufficiali.

Unicode Consortium

Unicode Technical Standard #18: Unicode Regular Expressions

Clausola: §1.2 Properties

Ecma International

ECMAScript 2024 Language Specification

Clausola: §22.2 RegExp (Regular Expression) Objects