Clases de caracteres
====================

Las clases de caracteres distinguen tipos de caracteres como, por ejemplo, distinguen entre letras y dígitos.

Pruébalo
--------

Tipos
-----

La siguiente tabla también está duplicada en `esta hoja de referencia`. No olvides editarla también, ¡gracias!

| Caracteres | Significado |
| --- | --- |
| `.` | Tiene uno de los siguientes significados:* Coincide con cualquier carácter único *excepto* terminadores de línea: `\n`, `\r`, `\u2028` o `\u2029`. Por ejemplo, `/.i/` coincide con "mi" y "si", pero no con "día", en "si alegra mi día".
* Dentro de un juego de caracteres, el punto pierde su significado especial y concuerda con un punto literal.

Ten en cuenta que el indicador multilínea `m` no cambia el comportamiento del punto. Por lo tanto, para hacer coincidir un patrón en varias líneas, se puede utilizar el conjunto de caracteres `[^]` — coincidirá con cualquier carácter, incluidas las nuevas líneas.
ES2018 agregó el indicador `s` "*dotAll*", el cual permite que el punto también coincida con los terminadores de línea. |
| `\d` | Busca cualquier dígito (número arábigo). Equivalente a `[0-9]`. Por ejemplo, `/\d/` o `/[0-9]/` coincide con "2" en "B2 es el número de suite". |
| `\D` | Busca cualquier caracter que *no* sea un dígito (número arábigo). Equivalente a `[^0-9]`. Por ejemplo, `/\D/` o `/[^0-9]/` coincide con "B" en "B2 es el número de suite". |
| `\w` | Busca cualquier caracter alfanumérico del alfabeto latino básico, incluido el caracter de subrayado. Equivalente a `[A-Za-z0-9_]`. Por ejemplo, `/\w/` coincide con "m" en "manzana", "5" en "$5.28", "3" en "3D" y "m" en "Émanuel". |
| `\W` | Busca cualquier caracter que no sea un caracter de palabra del alfabeto latino básico. Equivalente a `[^A-Za-z0-9_]`. Por ejemplo, `/\W/` o `/[^A-Za-z0-9_]/` coincide con "%" en "50%" y "É" en "Émanuel". |
| `\s` | Busca un solo caracter de espacio en blanco, incluido el espacio, tabulación, avance de página, avance de línea y otros espacios Unicode. Equivalente a `[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]`. Por ejemplo, `/\s\w*/` encuentra " bar" en "foo bar". |
| `\S` | Busca un solo caracter que no sea un espacio en blanco. Equivalente a `[^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]`. Por ejemplo, `/\S\w*/` encuentra "foo" en "foo bar". |
| `\t` | Coincide con una tabulación horizontal. |
| `\r` | Coincide con un retorno de carro. |
| `\n` | Coincide con un salto de línea. |
| `\v` | Coincide con una tabulación vertical. |
| `\f` | Coincide con un caracter de avance de página. |
| `[\b]` | Coincide con un caracter de retroceso. Si estás buscando el carácter de límite de palabra (`\b`), consulta `Límites` (en-US). |
| `\0` | Coincide con un caracter `NUL`. No sigue a este con otro dígito. |
| `\c*X*` | Coincide con un caracter de control mediante [notación de intercalación](https://es.wikipedia.org/wiki/Caret\_notation), donde "X" es una letra de la A a la Z (correspondiente a los puntos de código `U+0001`*-*`U+001F`). Por ejemplo, `/\cM/` encuentra "\r" en "\r\n". |
| `\x*hh*` | Coincide con el carácter con el código `*hh*` (dos dígitos hexadecimales). |
| `\u*hhhh*` | Coincide con una unidad de código UTF-16 con el valor `*hhhh*` (cuatro dígitos hexadecimales). |
| `\u*{hhhh}* o *\u{hhhhh}*` | (Solo cuando se establece el indicador `u`). Hace coincidir el carácter con el valor Unicode `U+*hhhh*` o `U+*hhhhh*` (dígitos hexadecimales). |
| `\` | Indica que el siguiente caracter se debe tratar de manera especial o "escaparse". Se comporta de dos formas.* Para los caracteres que generalmente se tratan literalmente, indica que el siguiente caracter es especial y no se debe interpretar literalmente. Por ejemplo, `/b/` coincide con el carácter "b". Al colocar una barra invertida delante de "b", es decir, usando `/\b/`, el carácter se vuelve especial para significar que coincide con el límite de una palabra.
* Para los caracteres que generalmente se tratan de manera especial, indica que el siguiente caracter no es especial y se debe interpretar literalmente. Por ejemplo, "\*" es un carácter especial que significa que deben coincidir 0 o más ocurrencias del carácter anterior; por ejemplo, `/a*/` significa coincidir con 0 o más "*a*"es. Para hacer coincidir `*` literalmente, precede con una barra invertida; por ejemplo, `/a\*/` coincide con "a\*".

Para reconocer este caracter literalmente, escápalo consigo mismo. En otras palabras, para buscar `\` usa `/\\/`.
 |

Ejemplos
--------

### Buscar una serie de dígitos


```js
var datosAleatorios = "015 354 8787 687351 3512 8735";
var regexpCuatroDigitos = /\b\d{4}\b/g;
// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
// \d{4} indica un dígito, cuatro veces
// \b indica otro límite (es decir, no termina la coincidencia en medio de una palabra)

console.table(datosAleatorios.match(regexpCuatroDigitos));
// ['8787', '3512', '8735']
```

### Busca una palabra (del alfabeto latino) que comience con A


```js
var extractoAlicia =
  "Estoy segura de que no soy Ada, dijo, 'porque su cabello se hace en rizos tan largos, y el mío no se riza en absoluto'.";
var regexpPalabraEmpiezaConA = /\b[aA]\w+/g;
// \b indica un límite (es decir, no empieza a coincidir en medio de una palabra)
// [aA] indica las letras a o A
// \w+ indica cualquier carácter \*del alfabeto latino\*, varias veces

console.table(extractoAlicia.match(regexpPalabraEmpiezaConA));
// ["Ada", "absoluto"]
```

### Busca una palabra (de caracteres Unicode)

En lugar del alfabeto latino, podemos usar una variedad de caracteres Unicode para identificar una palabra (de modo que podamos tratar con texto en otros idiomas, tal como Ruso o Árabe). El "Plano multilingüe básico" de Unicode contiene la mayoría de los caracteres que se utilizan en todo el mundo y podemos utilizar clases y rangos de caracteres para reconocer las palabras escritas con esos caracteres.


```js
var textoNoEs = "Приключения Алисы в Стране чудес";
var regexpPalabraBMP = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
// BMP pasa por U+0000 a U+FFFF pero el espacio es U+0020

console.table(textoNoEs.match(regexpPalabraBMP));
["Приключения", "Алисы", "в", "Стране", "чудес"];
```


Nota para los editores de MDN: no intentes agregar ejemplos divertidos con emojis, ya que esos caracteres no los maneja la plataforma (Kuma).

Especificaciones
----------------

{{Specifications}}Compatibilidad del navegador
----------------------------

Para obtener información sobre la compatibilidad del navegador, consulta la `tabla principal de compatibilidad de expresiones regulares`.

Ve también
----------

* `Guía de expresiones regulares`
    + `Aserciones`
    + `Cuantificadores`
    + `Escapes de propiedades Unicode`
    + `Grupos y rangos`
* `El constructor RegExp()`