W3docs

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.

ClaseCoincide conEquivalente
\dun dígito[0-9]
\wun carácter de palabra: una letra, dígito o guion bajo[A-Za-z0-9_]
\sun carácter de espacio en blanco: espacio, tabulación \t, salto de línea \n, etc.
javascript— editable

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":

javascript— editable

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.

ClaseCoincide con
\Dcualquier carácter que no sea un dígito
\Wcualquier carácter que no sea un carácter de palabra
\Scualquier carácter que no sea un espacio en blanco
javascript— editable

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.

javascript— editable

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).

javascript— editable

Cuando quieres que el punto coincida también con saltos de línea, añade el modificador s (abreviatura de "dotAll"):

javascript— editable

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.

javascript— editable

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.)

javascript— editable

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.

javascript— editable

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.

javascript— editable

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: [\]], [\\].
javascript— editable
Advertencia

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 \s coinciden con dígitos, caracteres de palabra y espacios en blanco; \D \W \S coinciden con sus opuestos.
  • El punto . coincide con cualquier carácter excepto un salto de línea — a menos que añadas el modificador s (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.

Práctica

Práctica
¿Cuáles de las siguientes son clases de caracteres válidas en JavaScript?
¿Cuáles de las siguientes son clases de caracteres válidas en JavaScript?
Was this page helpful?