Clases de Caracteres en Expresiones Regulares de JavaScript
Aprende las clases de caracteres en regex de JavaScript: los atajos \d \w \s, sus negaciones \D \W \S, el punto, el modificador s (dotAll) y clases [...] personalizadas.
Clases de Caracteres en JavaScript
Una clase de caracteres es una parte de una expresión regular que coincide con un único carácter perteneciente a un conjunto particular — por ejemplo, "cualquier dígito" o "cualquier carácter de espacio en blanco". En lugar de enumerar cada posible carácter, describes el tipo de carácter que deseas y el motor de expresiones regulares realiza la coincidencia.
Esta página cubre las clases de atajo integradas (\d, \w, \s), sus negaciones (\D, \W, \S), el punto especial . y el modificador s (dotAll), y cómo construir tus propias clases con corchetes [...], incluyendo rangos y escapes.
Cada clase coincide exactamente con un carácter. Para coincidir con varios, combinas una clase con un cuantificador como + o {2,4}.
Las clases de atajo: \d \w \s
JavaScript proporciona tres clases de atajo para los grupos de caracteres más comunes.
| Clase | Coincide con | Equivalente |
|---|---|---|
\d | un dígito | [0-9] |
\w | un carácter de palabra: una letra, dígito o guion bajo | [A-Za-z0-9_] |
\s | un carácter de espacio en blanco: espacio, tabulación \t, salto de línea \n, etc. | — |
Una sola clase de atajo coincide con un carácter. Añade un cuantificador para coincidir con una secuencia de ellos — \d+ significa "uno o más dígitos":
Las clases negadas: \D \W \S
Cada clase de atajo tiene una versión en mayúscula que coincide con el conjunto opuesto — cualquier carácter que no esté en la clase original.
| Clase | Coincide con |
|---|---|
\D | cualquier carácter que no sea un dígito |
\W | cualquier carácter que no sea un carácter de palabra |
\S | cualquier carácter que no sea un espacio en blanco |
Un truco práctico: \D (o [^\d]) te permite eliminar todo excepto los dígitos, lo cual es habitual al limpiar datos introducidos por el usuario como números de teléfono.
El punto . y el modificador s (dotAll)
El punto . es una clase de carácter especial que coincide con cualquier carácter excepto un salto de línea (\n, \r y algunos separadores de línea Unicode).
Cuando sí quieres que el punto coincida también con saltos de línea, añade el modificador s (abreviatura de "dotAll"):
Consulta patterns and flags para ver la lista completa de modificadores de expresiones regulares como g, i y s.
Clases de caracteres personalizadas: [...]
Cuando las clases de atajo no se ajustan a tus necesidades, construye tu propia clase listando caracteres entre corchetes. [abc] coincide con una sola a, b o c.
Rangos
Un guion - entre dos caracteres crea un rango: [a-z] coincide con cualquier letra minúscula, [0-9] con cualquier dígito. Puedes combinar varios rangos y caracteres literales en una sola clase. (Para un análisis más detallado, consulta sets and ranges.)
Clases personalizadas negadas [^...]
Un circunflejo ^ como primer carácter dentro de los corchetes niega la clase: [^a-z] coincide con cualquier carácter que no sea una letra minúscula.
Combinación de clases de atajo y caracteres
Las clases de atajo también funcionan dentro de clases personalizadas. [\w.] coincide con un carácter de palabra o un punto literal — útil para tokens como cadenas de versión o nombres de archivo.
Escapado dentro de clases de caracteres
Dentro de [...], la mayoría de los metacaracteres de expresiones regulares pierden su significado especial, por lo que normalmente no es necesario escaparlos. Por ejemplo, [.] coincide con un punto literal — no es necesario usar [\.].
Algunos caracteres requieren atención especial:
- Guion
-— indica un rango entre dos caracteres. Para coincidir con un guion literal, colócalo al principio, al final o escápalo:[-+],[+-]o[+\-]. - Circunflejo
^— niega la clase solo cuando es el primero. En cualquier otra posición ([a^]) es un^literal. - Corchete de cierre
]y barra invertida\— escápalos siempre:[\]],[\\].
Un guion mal colocado puede crear silenciosamente un rango no deseado. [a-z] es un rango, pero [z-a] produce un error de sintaxis, y [%-/] coincide con cualquier carácter cuyo punto de código se encuentre entre % y /. En caso de duda, escapa el guion o muévelo al borde de la clase.
Unicode y el modificador u
Por defecto, \w, \d y \s solo reconocen ASCII. Con el modificador u desbloqueas la coincidencia con reconocimiento Unicode y los escapes de propiedades como \p{Letter}, que coinciden con caracteres de cualquier idioma. Consulta the unicode flag u and class \p para más detalles.
Conclusión
Las clases de caracteres te permiten describir qué tipo de carácter debe coincidir en lugar de listar cada opción:
\d \w \scoinciden con dígitos, caracteres de palabra y espacios en blanco;\D \W \Scoinciden con sus opuestos.- El punto
.coincide con cualquier carácter excepto un salto de línea — a menos que añadas el modificadors(dotAll). - Los corchetes
[...]construyen conjuntos personalizados; añade rangos con-, niega con un^inicial y recuerda que la mayoría de los metacaracteres son literales dentro de una clase.
Combina estas clases con cuantificadores para coincidir con caracteres repetidos y construir patrones potentes y legibles.