Saltar al contenido principal
🔍 JavaScript / PCRE / entre lenguajes Estándar: Unicode Technical Standard #18 / ECMA-262 Tiempo: 8 min de lectura Revisado: octubre de 2026

Unicode en regex: escapes y flags

Haga coincidir con precisión alfabetos internacionales, escrituras y emojis usando \p{L}, \p{Script}, \p{Extended_Pictographic} y los flags modernos de RegExp.

TL;DR — Respuesta directa

Respuesta técnica directa

Las clases de caracteres regex estándar (\w, \d, [a-z]) solo coinciden con caracteres ASCII y fallan con el texto internacional. Los motores regex modernos admiten el modo Unicode (el flag /u o /v en ECMAScript) y los escapes de propiedades Unicode (\p{...}) para coincidir con caracteres según sus propiedades oficiales de Unicode.

💡
Regla de producción: Use \p{L} para coincidir con cualquier letra internacional de cualquier alfabeto; use \p{Extended_Pictographic} para coincidir con emojis; active siempre el flag /u o /v cuando busque coincidencias en texto Unicode.

Escapes de propiedades Unicode esenciales

Los escapes de propiedades Unicode más comúnmente requeridos, con soporte en los motores modernos.

\p{L} or \p{Letter}

Coincidencias: Cualquier letra en cualquier idioma (latín, griego, cirílico, árabe, hebreo, CJK, etc.)

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

\p{N} or \p{Number}

Coincidencias: Cualquier carácter numérico o dígito (incluidos los números romanos, subíndices y superíndices)

Ejemplo: 5, ², Ⅳ, ٥

\p{P} or \p{Punctuation}

Coincidencias: Cualquier carácter de puntuación

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

\p{Z} or \p{Separator}

Coincidencias: Cualquier espacio en blanco o separador invisible

Ejemplo: Espacio, espacio de no separación, espacio de un em

\p{Extended_Pictographic}

Coincidencias: Todos los emojis y símbolos pictográficos

Ejemplo: 😀, 🔥, 🚀, 🎉

\p{Script=Greek}

Coincidencias: Caracteres específicos de la escritura griega

Ejemplo: α, β, γ, Δ

Coincidencia de letras internacionales y emojis con escapes de propiedades 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!
Salida del programa
false
false
true
true
true
true
true

Errores comunes frente a patrones de producción

Aprenda qué patrones fallan en producción y cuáles son las alternativas modernas conformes con los estándares.

Coincidir con emojis de forma segura

Validación de chats, saneamiento de entradas, filtros de reacciones.
EVITAR: ❌ Rangos de caracteres frágiles
const badEmojiRegex = /[\u1F600-\u1F64F]/; // Matches only one block!
Por qué falla: Los emojis abarcan docenas de bloques de Unicode dispares. Los rangos codificados de forma rígida pasan por alto alimentos, animales, banderas y los nuevos símbolos introducidos en las versiones recientes de Unicode.
RECOMENDADO: ✅ \p{Extended_Pictographic}
const goodEmojiRegex = /\p{Extended_Pictographic}/u;
goodEmojiRegex.test('🔥'); // true
goodEmojiRegex.test('🍣'); // true
Por qué es mejor: Estandarizado formalmente por Unicode UTS #51 para coincidir con todos los símbolos pictográficos presentes y futuros.

Matriz de casos límite e invariantes

Una matriz de pruebas diversa entre caracteres que compara el comportamiento de los caracteres en ASCII, marcas combinantes, emojis, banderas y fragmentos sustitutos.

Caso de prueba Glifo de entrada Unidades de código Puntos de código Grafemas Categoría Explicación técnica
Nombre con acentos Renée — — — Standard Tanto las letras base como las letras acentuadas coinciden con \p{L}.
Texto cirílico Привет — — — Standard Las letras cirílicas coinciden con \p{L} en modo Unicode.
Ideogramas CJK 東京 — — — Standard Coincide explícitamente con caracteres Kanji/Han.

Procedencia de estándares y fuentes

Todos los invariantes técnicos, las API y los comportamientos de esta guía se verifican contra las especificaciones primarias oficiales.

Unicode Consortium

Unicode Technical Standard #18: Unicode Regular Expressions

Cláusula: §1.2 Properties

Ecma International

ECMAScript 2024 Language Specification

Cláusula: §22.2 RegExp (Regular Expression) Objects